【发布时间】:2010-11-24 11:41:21
【问题描述】:
我有一个带有标志参数的方法。我认为将布尔值传递给方法是一种不好的做法(使签名复杂化,违反了“每个方法做一件事”的原则)。我认为将方法分成两种不同的方法更好。但是如果我这样做,这两种方法会非常相似(代码重复)。
我想知道是否有一些通用技术可以将带有标志参数的方法拆分为两个单独的方法。
这是我的方法(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;
}
【问题讨论】:
标签: java refactoring flags coding-style