У меня есть метод с аргументом флага. Я считаю, что передача логического значения методу - плохая практика (усложняет подпись, нарушает принцип «каждый метод делает одно»). Я думаю, что лучше разделить метод на два разных метода. Но если я сделаю это, два метода будут очень похожи (дублирование кода).
Интересно, есть ли какие-то общие методы для разделения методов с аргументом флага на два отдельных метода.
Вот код моего метода (Java):
int calculateNumOfLiveOrDeadNeighbors(Cell c, int gen, boolean countLiveOnes) {
int x = c.getX();
int y = c.getY();
CellState state;
int aliveCounter = 0;
int deadCounter = 0;
for (int i = x - 1; i <= x + 1; i++) {
for (int j = y - 1; j <= y + 1; j++) {
if (i == x && j == y)
continue;
state = getCell(i, j).getCellState(gen);
if (state == CellState.LIVE || state == CellState.SICK){
aliveCounter++;
}
if(state == CellState.DEAD || state == CellState.DEAD4GOOD){
deadCounter++;
}
}
}
if(countLiveOnes){
return aliveCounter;
}
return deadCounter;
}