Đa số lập trình viên ngày nào, dự án nào cũng làm design và code nhưng chưa hề biết các nguyên tắc cơ bản của thiết kế phần mềm. Điều này cũng tương tự như vẽ tranh nhưng không hề biết nguyên tắc phối màu, nguyên tắc chiếu sáng và sẽ cho ra sản phẩm là một bức tranh kiểu trẻ con vẽ, thiếu chuyên nghiệp.
Vậy nguyên tắc thiết kế phần mềm là gì?
Vậy nguyên tắc thiết kế phần mềm là gì?
Nguyên tắc thiết kế phần mềm là một tập hợp các hướng dẫn giúp chúng ta tránh khỏi một thiết kế tồi. Nguyên tắc thiết kế có liên quan đến Robert Martin, người đã tập hợp chúng trong “Agile Software Development" bao gồm:
• Principles(Nguyên tắc)
• Patterns( Hình mẫu)
• Practices (Thực tiễn)
Theo R.Martin, có ba đặc điểm quan trọng của một thiết kế xấu nên tránh:
• Principles(Nguyên tắc)
• Patterns( Hình mẫu)
• Practices (Thực tiễn)
Theo R.Martin, có ba đặc điểm quan trọng của một thiết kế xấu nên tránh:
• Cứng nhắc (Rigidity) - Khó có thể thay đổi vì mỗi thay đổi ảnh hưởng quá nhiều đến các phần khác của hệ thống.
• Bất ổn định (Fragility) - Khi bạn thực hiện một sự thay đổi, phần thay đổi bất ngờ đó sẽ có thể phá vỡ hệ thống.
• Kém linh hoạt (Immobility) – Khó có thể tái sử dụng lại trong các ứng dụng khác bởi nó không thể tách rời khỏi các ứng dụng hiện hành.
Có 5 nguyên tắc thiết kế chính như ở dưới đây:
1. Nguyên tắc đóng mở - Open Close Principles (OPC)
Có 5 nguyên tắc thiết kế chính như ở dưới đây:
1. Nguyên tắc đóng mở - Open Close Principles (OPC)
Các thành phần như lớp (class), mô-dun(modules) và các chức năng(function) được mở (open) cho phần kế thừa và đóng(close) cho phần chỉnh sửa.
Software entities like classes, modules and functions should be open for extension but closed for modifications.
2. Quy tắc đảo ngược sự phụ thuộc – Dependency Inversion Principles (DIP)
Mô-dun cấp cao không cần phụ thuộc vào các mô-dun cấp thấp. Cả hai phụ thuộc vào sự trừu tượng.
Sự trừu tượng không cần phụ thuộc vào chi tiết. Ngược lại, chi tiết nên dựa vào trừu tượng.
High-level modules should not depend on low-level modules. Both should depend on abstractions.
Abstractions should not depend on details. Details should depend on abstractions.
3. Nguyên tắc tách biệt giao tiếp – Interface Segregation Principle (ISP)
Client khộng cần phải phụ thuộc vào giao tiếp mà chúng không sử dụng.
Clients should not be forced to depend upon interfaces that they don’t use.
4. Nguyên tắc trách nhiệm duy nhất – Single Responsibility Principle (SRP)
Một lớp chỉ có một lý do để thay đổi.
A class should have only one reason to change.
5. Nguyên tắc sự thay thế của Liskov - Liskov’s Substitution Principle (LSP)
Các loại gốc phải được hoàn toàn thay thế cho các loại cơ bản của chúng.
Derived types must be completely substitutable for their base types.
*A extend B - > A is derived class , B is base class ?*
Reference Link:
Không có nhận xét nào:
Đăng nhận xét