История изменений
Исправление Deleted, (текущая версия) :
Ведь налицо использование антипаттерна полтергейста, когда создается микрокласс с несколькими простейшими функциями.
Можно под любой вариант кода подогнать паттерн, либо антипаттерн, было бы желание.
Но поставим вопрос иначе. Вот два куска кода. Действительно ли проще читать второй кусок и понимать происходящее? Ведь, именно в этом суть борьбы с антипаттернами.
По-моему, ясный и однозначный код из первого варианта превращен во втором в неочевидное нагромождение методов.
private void thereAreManyLetters(int count) {
...
}
private void thereIsOneLetter() {
...
}
private void thereAreNoLetters() {
...
}
По одним только названиям видно, что это плохой код. А уж по коду внутри — и подавно. Следующий этап этого дизайна будет выглядеть так:
private void createPluralDependentMessageParts(int count) {
applyCount(count);
if (countIsZero()) {
thereAreNoLetters();
} else if (countIsOne()) {
thereIsOneLetter();
} else {
thereAreManyLetters(count);
}
}
private void thereAreManyLetters(int count) {
applyNumber(Integer.toString(count));
applyVerbAre();
applyPluralModifier();
}
private void thereIsOneLetter() {
applyNumberOne();
applyVerbIs();
applySingularModifier();
}
private void thereAreNoLetters() {
applyNumberNo();
applyVerbAre();
applyPluralModifier();
}
Исходная версия Deleted, :
Ведь налицо использование антипаттерна полтергейста, когда создается микрокласс с несколькими простейшими функциями.
Можно под любой вариант кода подогнать паттерн, либо антипаттерн, было бы желание.
Но поставим вопрос иначе. Вот два куска кода. Действительно ли проще читать второй кусок и понимать суть происходящего? Ведь, именно в этом суть борьбы с антипаттернами.
По-моему, ясный и однозначный код из первого варианта превращен во втором в неочевидное нагромождение методов.
private void thereAreManyLetters(int count) {
...
}
private void thereIsOneLetter() {
...
}
private void thereAreNoLetters() {
...
}
По одним только названиям видно, что это плохой код. А уж по коду внутри — и подавно. Следующий этап этого дизайна будет выглядеть так:
private void createPluralDependentMessageParts(int count) {
applyCount(count);
if (countIsZero()) {
thereAreNoLetters();
} else if (countIsOne()) {
thereIsOneLetter();
} else {
thereAreManyLetters(count);
}
}
private void thereAreManyLetters(int count) {
applyNumber(Integer.toString(count));
applyVerbAre();
applyPluralModifier();
}
private void thereIsOneLetter() {
applyNumberOne();
applyVerbIs();
applySingularModifier();
}
private void thereAreNoLetters() {
applyNumberNo();
applyVerbAre();
applyPluralModifier();
}