S = 단일 책임 원칙
따라서 잘 구성된 폴더 / 파일 구조 및 개체 계층 구조가 나타납니다. 각 클래스 / 기능의 기능은 그 기능이 매우 명백하다는 이름이 있어야하며 해당 작업을 수행하기위한 논리 만 포함해야합니다.
수천 줄의 코드로 거대한 관리자 클래스를 본다면 단일 책임이 따르지 않았다는 신호일 것입니다.
O = 개방 / 폐쇄 원리
이것은 기본적으로 기존 기능의 수정에 최소한의 영향을 미치거나 수정해야하는 새 클래스를 통해 새로운 기능을 추가해야한다는 아이디어입니다.
객체 상속, 하위 타이핑, 인터페이스 및 추상 클래스를 많이 사용하여 기능의 디자인을 실제 구현과 분리하여 다른 사람들이 다른 버전을 따라 영향을받지 않고 다른 버전을 따라 나아갈 수있게 할 것으로 기대합니다. 기발한.
L = Liskov 대체 원리
이것은 하위 유형을 상위 유형으로 처리하는 기능과 관련이 있습니다. 적절한 상속 된 개체 계층 구조를 구현하는 경우 C #에서 즉시 제공됩니다.
공통 객체를 기본 유형으로 처리하고 하위 유형 자체를 인스턴스화하고 작업하는 대신 기본 / 추상 클래스에서 메소드를 호출하는 코드를 볼 것으로 기대합니다.
I = 인터페이스 분리 원리
이것은 SRP와 유사합니다. 기본적으로, 당신은 인터페이스로 기능의 작은 하위 집합을 정의하고 시스템 (분리 유지하기 위해 그와 함께 작동 예 : FileManager
파일을 다루는 하나의 responsibilty이있을 수 있습니다 I / O를,하지만 그건를 구현할 수 IFileReader
및 IFileWriter
이는 읽기에 대한 특정 메소드 정의를 포함 파일 쓰기).
D = 의존성 역전 원리.
이 역시 시스템 분리를 유지하는 것과 관련이 있습니다. 아마 당신은 .NET 종속성 주입 라이브러리의 사용에 대한 경계에있을 것 같은 용액에 사용되는 Unity
또는 Ninject
같은 ServiceLocator 시스템이나 AutoFacServiceLocator
.