Trong cộng đồng phát triển phần mềm, một cuộc tranh luận sôi nổi đã nổi lên xung quanh một trong những nguyên tắc cơ bản nhất của lập trình: DRY (Đừng Lặp Lại). Mặc dù truyền thống được xem là nền tảng của thiết kế phần mềm tốt, những thảo luận gần đây cho thấy một góc nhìn tinh tế hơn về việc lặp lại code và vai trò của nó trong việc bảo trì phần mềm.
Sự Phát Triển của DRY
Cộng đồng phát triển phần mềm đang chứng kiến một sự thay đổi đáng kể trong tư duy về việc lặp lại code. Điều từng được coi là một tội lỗi nghiêm trọng giờ đây đang được đánh giá lại thông qua lăng kính của kinh nghiệm thực tế. Nhiều lập trình viên nhận thấy rằng việc áp dụng máy móc nguyên tắc DRY có thể dẫn đến những trừu tượng hóa không cần thiết và code bị ràng buộc chặt chẽ, khiến việc bảo trì trở nên khó khăn hơn theo thời gian.
Lý Do Ủng Hộ Việc Lặp Code Có Kiểm Soát
Ngày càng có nhiều lập trình viên giàu kinh nghiệm cho rằng một mức độ lặp lại code nhất định có thể tốt hơn việc trừu tượng hóa quá sớm. Điểm mấu chốt là code trông có vẻ giống nhau không nhất thiết đại diện cho cùng một khái niệm cơ bản, và việc ép buộc trừu tượng hóa có thể tạo ra nhiều vấn đề hơn là giải quyết chúng.
Những thứ luôn phải giống nhau nên có một tên gọi chung, và những thứ có thể khác nhau nên có tên gọi riêng. Làm như vậy tạo nền tảng vững chắc giúp các lập trình viên thực hiện thay đổi cục bộ mà không làm ảnh hưởng đến toàn bộ chương trình.
Quy Tắc Ba Lần
Cuộc thảo luận trong cộng đồng cho thấy một mô hình thú vị xung quanh Quy tắc Ba lần - ý tưởng cho rằng code có thể được lặp lại một lần (tạo ra hai bản sao), nhưng nên được trừu tượng hóa khi xuất hiện lần thứ ba. Tuy nhiên, các lập trình viên có kinh nghiệm cảnh báo rằng điều này không nên được coi là quy tắc cứng nhắc. Thay vào đó, quyết định trừu tượng hóa nên dựa trên việc liệu những thay đổi trong tương lai ở một phiên bản có nhất thiết yêu cầu những thay đổi tương tự ở các phiên bản khác hay không.
Những hiểu biết chính về cộng đồng:
- Phương pháp DRY (Đừng Lặp Lại) và WET (Viết Mọi Thứ Hai Lần)
- "Quy tắc Ba lần" cho việc lặp lại mã
- Ảnh hưởng của việc trừu tượng hóa sớm đến khả năng bảo trì
- Cân bằng giữa khả năng kiểm thử và thiết kế thực tế
Triết Lý về Kiểm Thử và Thiết Kế
Một quan điểm thú vị đã xuất hiện về mối quan hệ giữa khả năng kiểm thử và thiết kế tốt. Trong khi một số người cho rằng code khó kiểm thử là dấu hiệu của thiết kế kém, những người khác lại cho rằng việc làm cho code dễ kiểm thử đôi khi có thể dẫn đến sự phức tạp không cần thiết. Điều này đã khơi mào một cuộc thảo luận rộng hơn về sự cân bằng giữa phát triển phần mềm thực tế và các nguyên tắc lý thuyết tốt nhất.
Tác Động đến Phát Triển Hiện Đại
Ý nghĩa của cuộc tranh luận này vượt xa những quyết định lập trình đơn lẻ. Các nhóm ngày càng nhận ra rằng việc tuân thủ cứng nhắc các nguyên tắc như DRY có thể dẫn đến điều mà một số lập trình viên gọi là địa ngục trừu tượng - nơi việc theo đuổi tái sử dụng code tạo ra mạng lưới phụ thuộc phức tạp khiến hệ thống khó hiểu và khó bảo trì hơn.
Tóm lại, cộng đồng phát triển phần mềm đang hướng tới một cách hiểu tinh tế hơn về việc lặp lại code. Thay vì coi DRY như một quy tắc tuyệt đối, các lập trình viên ngày càng xem nó như một trong nhiều công cụ trong kho vũ khí của họ, cần được áp dụng với sự cân nhắc kỹ lưỡng về bối cảnh cụ thể và tác động bảo trì trong tương lai.
Nguồn tham khảo: Good software development habits