Giới Thiệu về SOLID
Cách đây khoảng 10 năm, tôi nhớ mình đã phải vật lộn với việc học và hiểu về SOLID cũng như các Design Pattern. Thời điểm đó, rất ít lập trình viên thực sự nắm rõ SOLID, và việc chia sẻ kiến thức trên mạng xã hội chưa phổ biến như ngày nay. Những người am hiểu về SOLID thường không nói nhiều và các kiến thức thú vị dường như là một bí mật khó gần với phần đông lập trình viên.
Có thể hình dung SOLID và Design Pattern giống như chủ đề tình dục đối với thiếu niên, ai cũng bàn luận nhưng lại rất ít người hiểu tường tận về nó. Mười năm trước, ngành công nghiệp phần mềm ở Việt Nam mới chỉ bắt đầu hình thành và phát triển. Giờ đây, tình hình đã khác hẳn. Tài liệu về SOLID đã phong phú hơn, mạng xã hội giúp việc chia sẻ kiến thức trở nên dễ dàng hơn, và các lập trình viên cũng cởi mở hơn trong việc chia sẻ kinh nghiệm.
Dẫu vậy, một điều vẫn không thay đổi: những người giỏi vẫn rất ít khi lên tiếng. Khi tìm kiếm thông tin trên các kênh YouTube hay blog, nhiều nội dung về SOLID lại có phần sáo rỗng và không đúng như bản chất vấn đề. Một số nguồn tóm tắt chính xác nhưng lại quá trừu tượng, khó áp dụng cho người mới bắt đầu. Tôi không thể phủ nhận rằng SOLID khó lý giải. Mặc dù mỗi nguyên tắc có vẻ đơn giản như 1+1=2, nhưng nhiều lúc chúng ta vẫn không hiểu rõ và không áp dụng hiệu quả vào công việc. Bài viết này sẽ chia sẻ những trải nghiệm của tôi về SOLID một cách gần gũi và dễ hiểu hơn.
SOLID Là Các Nguyên Tắc Cần Thiết Nhưng Không Phải Lý Tưởng Nhất
Chúng ta không lập trình để chỉ thỏa mãn các nguyên tắc SOLID. Mỗi sản phẩm phần mềm đều nhằm mục đích giải quyết một vấn đề cụ thể. Nếu code của bạn không giải quyết được vấn đề, nó chỉ đơn giản là vô nghĩa. Các nguyên tắc SOLID thực chất là những nền tảng để hỗ trợ cho một quy trình phát triển bền vững, trong đó bao gồm:
- Khả năng bảo trì mã nguồn.
- Khả năng tái sử dụng.
- Khả năng mở rộng chức năng (extensibility).
- Khả năng kiểm thử.
- Khả năng mở rộng quy mô (scalability).
- An toàn và bảo mật.
Tuy nhiên, tôi muốn tóm gọn sáu nguyên tắc trên thành một từ duy nhất: THAY ĐỔI. Mục tiêu cuối cùng là viết ra những dòng code bền vững và để điều đó xảy ra, code cần phải biết THAY ĐỔI. Điều này xuất phát từ thực tế rằng các dòng code bền vững không chỉ không cần thay đổi mà còn phải sẵn sàng biến đổi khi cần thiết để bảo vệ giá trị mà nó hướng tới.
Nhìn vào các tập đoàn lớn như Apple, Microsoft, và Google, ta thấy rằng sự bền vững của họ đi kèm với khả năng thay đổi liên tục. Điều đó chứng minh rằng Innovation khởi nguồn từ Change. Chính những nguyên tắc chắc chắn của SOLID sẽ hỗ trợ cho chúng ta trong việc sẵn sàng cho Thay đổi.
Hãy Nhớ Đến THAY ĐỔI Thay Vì SOLID
Cách đây 10 năm, bản thân tôi đã cố gắng học SOLID nhưng không hiểu được nó. Đến 6 năm trước, tôi mới bắt đầu cảm thấy có chút hiểu biết, một phần vì tôi đã suy nghĩ nhiều về khái niệm Thay đổi. Tôi đã không ngừng đặt ra nhiều câu hỏi liên quan đến sự phát triển của sản phẩm:
- Chức năng này sẽ mở rộng. Liệu chúng ta sẽ thêm mới nó như thế nào?
- Cách tính toán có thể sẽ thay đổi, vậy khi đó thì sao?
- Một API có lúc trả nhiều dữ liệu, có lúc ít. Vậy khi nào nên trả về thế nào là hợp lý?
- Các sản phẩm không tồn tại đơn lẻ mà phải tích hợp với nhiều hệ thống khác. Làm thế nào để duy trì sự tích hợp nhưng vẫn có tính độc lập?
Dễ thấy rằng, ngay cả những điều chúng ta cho là dễ hiểu về sản phẩm vẫn tồn tại rất nhiều câu hỏi không rõ rang. Bên cạnh đó, cũng có những yếu tố bất ngờ có thể thay đổi toàn bộ kế hoạch:
- Các lỗi nghiêm trọng.
- Chức năng không cần thiết phải bị loại bỏ.
- Những yêu cầu từ khách hàng lớn hoặc tiềm năng.
- Những tính năng nổi bật từ đối thủ.
- Nguy cơ bị hack.
Kết lại, tôi muốn nhấn mạnh rằng Thay đổi là điều tự nhiên trong thế giới này, chứ không phải là cái gì đó tĩnh lặng. Hãy luôn chú ý đến khả năng thay đổi của chức năng, sản phẩm và đừng ngại tự đặt ra câu hỏi cho chính mình. Việc hoàn thành code rồi để im không phải là cách hiệu quả để phát triển nghề nghiệp. Từ góc độ này, SOLID và Design Pattern chính là công cụ để chúng ta làm việc hiệu quả hơn. Trong bài viết tiếp theo, chúng ta sẽ tìm hiểu chi tiết hơn về các nguyên tắc của SOLID và cách mà chúng hỗ trợ cho quá trình Thay đổi.
source: viblo