Существуют ли какие-либо методы разделения метода с аргументом флага?

У меня есть метод с аргументом флага. Я считаю, что передача логического значения методу - плохая практика (усложняет подпись, нарушает принцип «каждый метод делает одно»). Я думаю, что лучше разделить метод на два разных метода. Но если я сделаю это, два метода будут очень похожи (дублирование кода).

Интересно, есть ли какие-то общие методы для разделения методов с аргументом флага на два отдельных метода.

Вот код моего метода (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;
}
8
задан Rich Lawrence 5 February 2011 в 20:26
поделиться