문제

클래스 디자인을 할 때 일반적으로 따르는 원칙은 무엇입니까?

도움이 되었습니까?

해결책

객체 지향 클래스 디자인의 원칙("SOLID" 원칙)

  • SRP:단일 책임 원칙 클래스는 변경해야 할 이유만이 있어야합니다.
  • OCP:개방형 폐쇄 원칙 클래스 동작을 수정하지 않고 확장 할 수 있어야합니다.
  • LSP:Liskov 대체 원리 파생 클래스는 기본 클래스를 대체 할 수 있어야합니다.
  • ISP:인터페이스 분리 원리 클라이언트에 맞는 미세한 곡물 인터페이스를 만듭니다.
  • 담그다:의존성 반전 원리 콘크리트가 아닌 추상화에 의존합니다.

원천: http://butunclebob.com/ArticleS.UncleBob.PrinciplesOfOod

다른 팁

잊지 마세요 데메테르의 법칙.

그만큼 단단한.원칙.
아니면 적어도 나는 그들로부터 너무 많이 멀어지지 않으려고 노력합니다.

가장 근본적인 디자인 패턴은 키스 (단순한 바보를 유지)이어야합니다. 즉, 때로는 일부 요소에 클래스를 사용하지 않으면 올바른 솔루션입니다.

해당 카드와 CRC(Class, Responsibility, Collaborators) 카드(문서도 이해하기 쉽기 때문에 실제 카드가 아닌 헤더 파일에 카드를 기록합니다)

위에서 언급했듯이 기본적인 객체 지향 설계 원칙 중 일부는 OCP, LSP, DIP 및 ISP입니다.

이에 대한 훌륭한 개요는 Robert C.Martin(Object Mentor 소속)은 여기에서 확인할 수 있습니다. OOD 원칙과 패턴

"자원 획득은 초기화입니다" 패러다임은 특히 C++로 작성하고 운영 체제 리소스(파일 핸들, 포트 등)를 처리할 때 편리합니다.

이 접근 방식의 주요 이점은 일단 생성된 개체가 "완전"하다는 것입니다. 즉, 2단계 초기화가 필요 없고 부분적으로 초기화된 개체가 있을 가능성도 없습니다.

느슨하게 결합되어 있고 응집력이 높습니다.

상속보다 구성.

도메인 중심 설계는 일반적으로 따라야 할 좋은 원칙입니다.

기본적으로 저는 인터페이스 프로그래밍을 하지 않습니다.나는 코드 중복을 피하고 코드를 관리 가능한(내 뇌를 위한) 덩어리로 분리하기 위해 사례를 통해 변경되는 사항을 캡슐화하려고 노력합니다.나중에 필요한 경우 코드를 매우 쉽게 리팩터링할 수 있습니다.

단일 책임 패턴과 함께 SOLID 원칙과 Liskov의 패턴.

이 모든 것에 제가 추가하고 싶은 것은 레이어링, 애플리케이션에서 레이어 정의, 레이어의 전반적인 책임, 두 레이어가 상호 작용하는 방식입니다.해당 레이어에는 해당 레이어와 동일한 책임을 가진 클래스만 허용되어야 합니다.이렇게 하면 많은 혼란이 해결되고 예외가 적절하게 처리되며 새로운 개발자가 코드를 배치할 위치를 알 수 있습니다.

또 다른 설계 방법은 하위 클래스의 메서드를 재정의하는 대신 클래스에 구성을 연결할 수 있는 메커니즘을 생성하여 구성 가능하도록 클래스를 설계하고, 변경 사항을 식별하고, 구성 가능하게 만들 수 있는지 확인하고, 이 기능이 다음과 같은지 확인하는 것입니다. 구성에서 파생됨

나는 보통 수업을 OO 중 하나에 맞추려고 노력합니다. 디자인 패턴.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top