Как исправить нарушение принципа DRY? public Token match(ITokenType expectedToken, int tokenNum) { if(hasToken(_currentTokenNum)) if(expectedToken == getToken(tokenNum).get_type()) return getToken(tokenNum); return null; } public Token match(Class clazz, int tokenNum) { if(hasToken(_currentTokenNum)) if(clazz.isInstance(getToken(tokenNum).get_type())) return getToken(tokenNum); return null; }

2 Июл 2023 в 19:53
112 +1
0
Ответы
1

Один из способов исправить нарушение принципа DRY (Don't Repeat Yourself) в данном случае - объединить два метода в один, используя параметр для определения способа сравнения:

public Token match(Object expectedToken, int tokenNum) {
if (hasToken(_currentTokenNum)) {
Object tokenType = getToken(tokenNum).get_type();
if (expectedToken instanceof ITokenType && expectedToken == tokenType) {
return getToken(tokenNum);
} else if (expectedToken instanceof Class<?> && ((Class<?>) expectedToken).isInstance(tokenType)) {
return getToken(tokenNum);
}
}
return null;
}

Теперь вместо двух отдельных методов match используется один метод с параметром expectedToken, который определяет способ сравнения. Это позволит избежать повторения кода и улучшить читаемость программы.

16 Апр в 16:08
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Название заказа не должно быть пустым
Введите email
Бесплатные доработки
Гарантированные бесплатные доработки
Быстрое выполнение
Быстрое выполнение от 2 часов
Проверка работы
Проверка работы на плагиат
Интересные статьи из справочника
Поможем написать учебную работу
Название заказа не должно быть пустым
Введите email
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 89 997 авторам
Первые отклики появятся уже в течение 10 минут
Прямой эфир