Hồi trước Đạt không nhớ đã đọc ở đâu, rất có thể là Code Complete 2, có nói rằng một hàm không nên có hai vòng for.
Lý do?
Bởi vì một vòng for đủ để thực hiện một công việc gì đó có ý nghĩa rồi. tại sao không tạo ra riêng một hàm chỉ để xử lý công việc của vòng for đó. Việc này sẽ giúp cho việc viết code rõ ràng hơn.
Chú ý:
- Hai for lồng nhau tương đối ổn, Ba for trở đi là cực kỳ không ổn. Nếu tính về phần giải thuật thì số lần lặp là lập phương, chả biết nói sao, tức là O(n3).
for () {
for () {
}
}
- Hai for rời rạc là không nên
void blah() {
// for 1, doing foo
for () {
}
// for 2, doing bar
for () {
}
}
Nên thay for
(1) làm một hàm và for
(2) làm một hàm khác. Lý do là mỗi vòng for
đã thể hiện một công việc riêng biệt rồi.
- Khi đó ta sẽ có
void blah() {
foo();
bar();
}
Code thế này rõ ràng hơn phiên bản cũ. Các bạn thấy sao?