Cộng đồng phát triển phần mềm đang tích cực thảo luận về một cuộc tranh luận hấp dẫn giữa hai nhân vật có ảnh hưởng trong lĩnh vực thiết kế phần mềm: Robert Uncle Bob Martin, tác giả của Clean Code, và John Ousterhout, tác giả của A Philosophy of Software Design. Cuộc thảo luận của họ đã châm ngòi cho nhiều bình luận đáng chú ý về các phương pháp cơ bản trong phát triển phần mềm và các thực hành tốt nhất.
Vấn đề về Giáo điều
Một trong những điểm thảo luận nổi bật nhất xoay quanh tính cứng nhắc được nhận thấy trong các nguyên tắc của Clean Code. Nhiều nhà phát triển bày tỏ lo ngại về việc áp dụng máy móc các quy tắc, đặc biệt là về độ dài hàm và cách thực hành viết chú thích. Cộng đồng nhấn mạnh rằng việc tuân thủ nghiêm ngặt các nguyên tắc như hàm chỉ nên dài 2-4 dòng có thể dẫn đến điều mà một số nhà phát triển gọi là mã lasagna - nhiều lớp trừu tượng mỏng chồng lên nhau làm phức tạp hóa thay vì làm rõ mã nguồn.
Đối với tôi, mục tiêu cơ bản của thiết kế phần mềm là làm cho việc hiểu và sửa đổi hệ thống trở nên dễ dàng. Tôi sử dụng thuật ngữ 'độ phức tạp' để chỉ những thứ làm cho việc hiểu và sửa đổi hệ thống trở nên khó khăn.
Các Điểm Tranh Luận Chính:
- Độ dài của hàm (Clean Code: 2-4 dòng so với cách tiếp cận theo ngữ cảnh)
- Cách sử dụng comment (tối thiểu so với tài liệu có mục đích)
- Nguyên tắc trừu tượng hóa (quy tắc cứng nhắc so với đo lường tỷ lệ phức tạp)
- Cách tiếp cận phát triển (mang tính quy định so với dựa trên bằng chứng)
Vai trò của Chú thích
Một điểm bất đồng đáng kể xoay quanh cách xử lý chú thích trong mã. Trong khi Clean Code ủng hộ mã tự giải thích với chú thích tối thiểu, nhiều nhà phát triển lại ủng hộ vai trò thiết yếu của chú thích trong việc giải thích lý do đằng sau các quyết định mã, đặc biệt khi làm việc với hệ thống bên ngoài, giao diện phần cứng, hoặc các quy trình phản trực giác. Cộng đồng đặc biệt nhấn mạnh giá trị của chú thích trong việc ghi lại các giải pháp tạm thời, yêu cầu về thời gian, và hành vi đặc thù của hệ thống mà không thể truyền đạt hiệu quả chỉ thông qua tên phương thức.
Phương pháp Dựa trên Bằng chứng
A Philosophy of Software Design của Ousterhout đã thu hút sự chú ý đặc biệt nhờ phương pháp tiếp cận thiết kế phần mềm dựa trên bằng chứng. Cuốn sách giới thiệu khái niệm đo lường chất lượng trừu tượng thông qua tỷ lệ giữa độ phức tạp chứa đựng và độ phức tạp giao diện. Phương pháp thực tế này đã gây tiếng vang với nhiều nhà phát triển, những người thấy rằng nó cung cấp một khuôn khổ linh hoạt và thực dụng hơn cho việc đưa ra quyết định thiết kế.
Sự Phát triển trong Tư duy của Nhà phát triển
Một mô hình thú vị xuất hiện từ cuộc thảo luận: nhiều nhà phát triển mô tả hành trình từ việc ban đầu áp dụng các hướng dẫn nghiêm ngặt của Clean Code đến việc cuối cùng áp dụng một phương pháp tiếp cận thiết kế phần mềm tinh tế hơn, nhạy cảm với ngữ cảnh. Sự phát triển này thường mất khoảng năm năm, cho thấy rằng mặc dù các quy tắc mang tính chỉ dẫn có thể có lợi cho người mới bắt đầu, nhưng các nhà phát triển có kinh nghiệm thường ưa chuộng các giải pháp linh hoạt hơn, tùy thuộc vào tình huống.
Tóm lại, mặc dù cả hai cuốn sách đều đóng góp đáng kể cho tư duy thiết kế phần mềm, cộng đồng ngày càng ủng hộ một phương pháp tiếp cận cân bằng, xem xét bối cảnh, tính thực tế và nhu cầu cụ thể của từng dự án thay vì tuân thủ các quy tắc cứng nhắc. Cuộc tranh luận này nhấn mạnh sự phát triển liên tục của các nguyên tắc thiết kế phần mềm và tầm quan trọng của việc duy trì tính linh hoạt thực dụng trong các thực hành phát triển.
Tham khảo: Giới thiệu