Я использую Java, но я думаю, что этот вопрос относится к любому языку.Я просто хочу спросить, лучше ли выходить из цикла, используя логическое значение, которое я переключаю внутри цикла, или просто использовать разрыв;
Например, я просто писал метод, чтобы получить действительные шагиКоролева в шахматах.
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;
}
Если я выйду из цикла while, используя break;вместо того, чтобы устанавливать остановку в true, как я делаю, я понимаю, что она работает более эффективно, но это не лучший стиль кода.