profile
기술블로거입니다

상위 문제에 대한 최적의 솔루션은 하위 문제에 대한 최적의 솔루션에 따라서 달라진다.

규칙

  • S : 단일 책임 원칙: "한 클래스가 변경되는 데는 두 가지 이상의 이유가 있어서는 안 된다. 즉, 모든 클래스는 단 하나의 책임만 가져야 한다."
  • O : 개방-폐쇄 원칙: "소프트웨어 엔티티는 ... 확장을 위해서는 개방적이어야 하지만 수정을 위해서는 폐쇄적이어야 한다."
  • L : 리스코프 치환 원칙: "기본 클래스에 대한 포인터나 참조를 사용하는 함수는 파생 클래스의 객체를 자신도 모르게 사용할 수 있어야 한다. (계약에 의한 설계)."
  • I : 인터페이스 분리 원칙: "하나의 범용 인터페이스보다 다수의 클라이언트별 인터페이스가 더 낫다."
  • D : 의존성 반전 원칙: "구체화가 아닌 추상화에 의존하라."
  • 명확한 사용자 요구사항 파악 및 기능 설명
  • 지속 가능 (다음 개발자를 배려하는) 소프트웨어 개발
    - 가독성 높고 명확한 변수, 주석, 커밋 로그 작성
    - 코드 리펙토링 (중복 제거, 예외 처리, maintenance factor)
    - 문서화, 로깅, 코드 리뷰, 디자인 패턴