Bên em tiêu chuẩn 1 funtion tối đa là 1 trang giấy A4. Có lúc ngươi ta in code ra giấy để review.
25 dòng code cho mỗi hàm có quá ngắn?
Nếu thế có quá ngắn không nhỉ?
Một số đoạn code không thể tách được (theo trình đô của mình như những đoạn switch-case.
Một số ngôn ngữ mình thấy nó có hỗ trợ chia code thành từng vùng và thu lại nên có dài vẫn OK.
Còn chuyên nghiệp thì nó mông lung lắm :))
Tóm lại đây là một trong những cái “nên” trong lập trình. Và vì là “nên” nên nó không bắt buộc
ngắn gọn và dễ hiểu thì rất tiện về sau cho những người làm cùng và review lại :-?
em chưa làm dự án anof code đông người, không beiets code mà nhiều cá nhân commit thì sao nhỉ? nếu e làm qua e sẽ thấm hơn về quy tắc này, chắc vậy
Trong Code Complete hay Clean Code đâu có giới hạn về số lượng dòng code 1 trong hàm.
Họ chỉ viết là 1 function nên thực hiện 1 chức năng duy nhất và 1 mức level.
Về chức năng thì giống nguyên tắc Single Responsibility của SOLID. 1 function không thể vừa có đoạn code xử lý UI, đoạn code xử lý database.
Về mức level giới hạn về nest indenting do các câu lệnh điều khiển for, while, if tạo ra. Clean Code thì gợi ý nên tách các đoạn code trong các câu lệnh điều khiển thành 1 function riêng. Sau khi tách thấy class nhiều function quá mà thấy 1 số function liên quan với nhau thì tách các function đó gộp thành 1 class riêng, rồi composition class đó vào class cũ.
Mình nghĩ nếu viết hàm chỉ có 1 tính năng và 1 mức level thì mỗi function không chứa quá 50 dòng code.
Code dần sẽ ngộ ra là function ngắn và cùng 1 mức trừu tượng rất tốt =)))
Function ngắn thứ 1 là đỡ tốn thời gian viết, thứ 2 là dễ đọc dễ hiểu, không cần comment gì cả mà còn dùng lại được.
Vì function dài quá, thực hiện chi tiết quá thứ 1 phạm vi tái sử dụng rất hẹp hoặc không thể, thứ 2 là sẽ cực hình nếu nó nằm trên 2 màn hình, phải cuộn mới xem hết, ai não cá vàng hoặc bộ nhớ đệm của não hơi thấp vừa cuộn xuống đã quên phần trên thì đời coi như bỏ.
Các bạn có thể đọc thêm cuốn Refactoring của Martin Fowler.
Một function dài, dù có single responsibility, vẫn sẽ gây khó khăn cho maintainer. Việc tách ra thành các function nhỏ hơn sẽ giúp người sau đọc và maintain code dễ hơn.
Về switch case thì sẽ có một số design pattern để refactor.
Tất nhiên tất cả những thứ này chỉ là “nên”.