【发布时间】:2011-03-09 13:16:16
【问题描述】:
我正在使用 Java,但我想这个问题适用于任何语言。我只是想问一下,使用我在循环内切换的布尔值退出循环还是只使用 break 是更好的做法;
例如,我只是在编写一个方法来获取国际象棋皇后的有效走法。
private static final int[][] DIRS = {{0, 1}, {0, -1}, {1, 0}, {-1, 0}, {1, 1}, {-1, -1}, {-1, 1}, {1, -1}};
public Vector<Move> getValidMoves() {
Vector<Move> validMoves = new Vector<Move>();
for (int i = 0; i < DIRS.length; i++) {
boolean stopped = false;
int newX = x + DIRS[i][0];
int newY = y + DIRS[i][1];
while (!stopped && newX >= 0 && newX < 8 && newY >= 0 && newY < 8) {
if (board[newX][newY] == null) {
validMoves.add(new Move(x, y, newX, newY));
newX += DIRS[i][0];
newY += DIRS[i][1];
} else {
if (board[newX][newY].getColour() == colour) {
stopped = true;
} else {
validMoves.add(new Move(x, y, newX, newY));
stopped = true;
}
}
}
}
return validMoves;
}
如果我使用 break 退出 while 循环;而不是像我一样将stopped设置为true,我的理解是它运行效率更高,但不是最好的代码风格。
【问题讨论】:
-
查看您的女王代码,我想说您需要担心的不仅仅是一个中断语句。例如,如果您不需要线程安全的数据结构,请尽量避免使用 Vector(使用 ArrayList 代替),尝试将更多逻辑封装到对象中(例如测试坐标是否在棋盘上,以及替换幻数,例如“ 8")
-
好的,感谢您的提示。我会考虑的。
标签: java coding-style