Как исправить нарушение принципа 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
144 +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 Апр 2024 в 16:08
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир