S = Nguyên tắc trách nhiệm duy nhất
Vì vậy, tôi hy vọng sẽ thấy một cấu trúc thư mục / tệp được tổ chức tốt và phân cấp đối tượng. Mỗi lớp / phần chức năng nên được đặt tên là chức năng của nó rất rõ ràng và nó chỉ nên chứa logic để thực hiện nhiệm vụ đó.
Nếu bạn thấy các lớp người quản lý khổng lồ với hàng ngàn dòng mã, đó sẽ là dấu hiệu cho thấy trách nhiệm duy nhất không được tuân theo.
O = Nguyên tắc mở / đóng
Về cơ bản, đây là ý tưởng rằng chức năng mới nên được thêm vào thông qua các lớp mới có tác động tối thiểu đến / yêu cầu sửa đổi chức năng hiện có.
Tôi hy vọng sẽ thấy nhiều việc sử dụng kế thừa đối tượng, gõ phụ, giao diện và các lớp trừu tượng để tách biệt thiết kế của một chức năng khỏi triển khai thực tế, cho phép những người khác đi cùng và thực hiện các phiên bản khác cùng mà không ảnh hưởng đến nguyên.
Nguyên tắc thay thế L = Liskov
Điều này có liên quan đến khả năng coi các kiểu con là kiểu cha mẹ của chúng. Điều này xuất hiện trong C # nếu bạn đang thực hiện một hệ thống phân cấp đối tượng được kế thừa phù hợp.
Tôi hy vọng sẽ thấy mã xử lý các đối tượng phổ biến như kiểu cơ sở và phương thức gọi của chúng trên các lớp cơ sở / trừu tượng hơn là khởi tạo và làm việc trên chính các kiểu con.
I = Nguyên tắc phân chia giao diện
Điều này tương tự như SRP. Về cơ bản, bạn xác định các tập con nhỏ hơn các chức năng như giao diện và làm việc với những người để giữ cho hệ thống của bạn tách riêng (ví dụ như một FileManager
có thể có responsibilty duy nhất đối phó với File I / O, nhưng điều đó có thể thực hiện một IFileReader
và IFileWriter
trong đó có các định nghĩa phương pháp cụ thể cho việc đọc và viết các tập tin).
D = Nguyên tắc đảo ngược phụ thuộc.
Một lần nữa điều này liên quan đến việc giữ một hệ thống tách rời. Có lẽ bạn đang cảnh giác về việc sử dụng thư viện .NET Dependency Injection, đang được sử dụng trong giải pháp như Unity
hoặc Ninject
hoặc hệ thống ServiceLocator như AutoFacServiceLocator
.