TL; DR Làm bất cứ điều gì đọc tốt nhất trong hoàn cảnh cụ thể của bạn
Hãy lấy ví dụ này:
for ( int i = 1; i < array.length; i++ )
{
if(something) break;
// perform operations
}
Trong trường hợp này, chúng tôi không muốn bất kỳ mã nào trong vòng lặp for thực thi nếu something
là đúng, do đó, việc di chuyển kiểm tra something
vào trường điều kiện là hợp lý.
for ( int i = 1; i < array.length && !something; i++ )
Sau đó, một lần nữa, tùy thuộc vào việc something
có thể được đặt thành true
trước vòng lặp hay không, nhưng điều này có thể mang lại sự rõ ràng hơn:
if(!something)
{
for ( int i = 1; i < array.length; i++ )
{...}
}
Bây giờ hãy tưởng tượng điều này:
for ( int i = 1; i < array.length; i++ )
{
// perform operations
if(something) break;
// perform more operations
}
Chúng tôi đang gửi một thông điệp rất rõ ràng ở đó. Nếu something
trở thành đúng trong khi xử lý mảng thì từ bỏ toàn bộ thao tác tại thời điểm này. Để di chuyển kiểm tra vào trường điều kiện bạn cần làm:
for ( int i = 1; i < array.length && !something; i++ )
{
// perform operations
if(!something)
{
// perform more operations
}
}
Có thể cho rằng, "thông điệp" đã trở nên lầy lội và chúng tôi đang kiểm tra tình trạng lỗi ở hai nơi - điều gì xảy ra nếu điều kiện thất bại thay đổi và chúng ta quên một trong những nơi đó?
Tất nhiên có nhiều hình dạng khác nhau hơn cho một vòng lặp và điều kiện có thể, tất cả đều mang sắc thái riêng.
Viết mã để nó đọc tốt (điều này rõ ràng là hơi chủ quan) và chính xác. Bên ngoài một bộ hướng dẫn mã hóa hà khắc, tất cả các "quy tắc" đều có ngoại lệ. Viết những gì bạn cảm thấy thể hiện quyết định tốt nhất và giảm thiểu cơ hội cho những sai lầm trong tương lai.
condition
cụ thể là.