좋은 소프트웨어 시스템은 Clean Code 로부터 시작된다.

Clean Code 를 위해서는 SOLID 원칙을 준수해야 한다.

SOLID 원칙은 함수와 데이터 구조를 클래스로 배치하는 방법 , 그리고 해당 클래스들을 서로 결합하는 방법을 설명하며 , 꼭 객체 지향 소프트웨어에만 적용되는건 아니다.

SOLID 의 목적

즉 변경에 유연하고 이해하기 쉬우며 , 많은 소프트웨어 시스템에 사용될 수 있는 코드를 짜는 것이 목적이다.

S srp O ocp L lsp D dip

Single Responsibility Principle 단일 책임 원칙

각 소프트웨어 모듈의 변경 이유는 단 하나여야만 한다.

Open Closed Priciple 개방-폐쇄 원칙

코드를 수정하기 보다는 새로운 코드를 추가하는 방식으로 시스템의 행위를 변경할 수 있도록 설계해야 한다.

Liscope Substitution Principle 리스코프 치환 원칙

상호 대체 가능한 구성요소를 이용해서 소프트웨어 시스템을 만드려면 ,이들은 서로 반드시 치환 가능해야 한다.

Interface Segregation Principle 인터페이스 분리 원칙

소프트웨어 설계자는 사용하지 않은 것에 의존하지 않아야 한다

Dependency Inversion Principle 의존성 역전 원칙

고수준 정책 ( 하이레벨 즉 입출력과 먼 시스템 ) 을 구현하는 코드는 저수준 ( 입출력과 밀접한 시스템 ) 세부사항을 구현하는 코드에 절대로 의존해서는 안 된다.