는 다음과 같은 경우에 고려 염두에 SOLID 원칙과 테스트 용이성을 갖는 B하기 : 를 일부 중복되는 속성이 클래스 A와 클래스 B가 있습니다. 클래스 A의 공통 속성을 클래스 B로 복사 및/또는 변환하는 메서드가 필요합니다.이 메서드는 어디에 있습니까? 클래스 A를 B로 GetAsB()? 클래스 B를 생성자 B (A 입력)? 메서드로 클래스 B void
: 원칙 상태 : A. High-level modules should not depend on low-level modules. Both should depend on abstractions.
B. Abstractions should not depend upon details. Details should depend upon abstractions
디자이너로서 나는 힘/단순함 균형을 맞추는 인터페이스를 제공하는 것을 좋아합니다. 예를 들어 LINQ 디자이너는 도트 표기법과 쿼리 표기법을 모두 제공했기 때문에 이러한 원칙을 따랐습니다. 첫 번째는 더 강력하지만 두 번째는 읽기 쉽고 따를 수 있습니다. LINQ에 대한 나의 평가에 동의하지 않는다면, 어쨌든 제 관점을 보시기 바랍니다. LINQ는 단지 예
여러 유형의 인스턴스 (일부 유형은 서로 파생 됨)의 내부 해시 코드를 계산해야한다는 요구 사항이 있습니다. 여기에 동적 인 두 가지 측면이 있으며 은 각각입니다. 해시를 요청하는 클라이언트 만 사용되는 해시 알고리즘과 포함될 속성을 알고 있습니다. 해시 계산에 이 사용 된 실제 알고리즘이 변경 될 수 있습니다. 해시 계산에 고려해야 할 각 유형의 멤버를
IRegistrationService라는 클라이언트 등록을위한 인터페이스가 있습니다. 여기에는 Register라는 하나의 메소드가 있으며 RegisterService 클래스를 통해 구현됩니다. 예를 들어 Delete, Update, Retrieve 메서드가 필요하다면 IDeletionService, IUpdateService, IRetrieveService
가 SOLID 개발 이데올로기의 두 우수한 결과가 박스 가독성과 확장 성에서 - 가독성 - 프로젝트의 기간에 걸쳐 확장 (http://en.m.wikipedia.org/ 위글/솔리드 _ (객체 지향 디자인) SOLID는 언어에 구애받지 않는 디자인 아이디어의 집합이지만 일부 언어는 본 아이디어를 다른 언어보다 본질적으로 지원합니다. 언어는 쉽게 읽을 수 있
가능한 중복 : The Open/Closed Principle I 열기/닫기 원칙은 "You should be able to extend the class behaviour, without modifying it"
여기 개폐 무엇을 의미 하는가 제안을 이해 할 수 있습니까?
로버트 마틴의 솔리드 설계 원리를 처음으로 빨리 지키려고 노력하고 있습니다. 본질적으로 "노드"개체의 계층 구조가 필요합니다. 일부 노드는 NodeHost이고 일부는 NodeChildren이고 일부는 Both입니다. 모두가 전에이 일을 끝낼,하지만 난 SOLID없이 수행하는 방법을 알아낼 수 없습니다 지나치게 복잡한 설계를하거나 노드 하위 유형에서이 같은