SOLID : 객채지향 개발 5대 원리.
- SRP(Single Responsibility Principle : 단일 책임의 원칙)
작성된 클래스는 하나의 기능만을 가지며, 클래스가 제공하는 모든 서비스는 그 하나의 책임을 수행하는데 집중되어야 한다는 원칙.
어떤 변화에 의해 클래스를 변경해야 하는 이유는 오직 하나여야 함을 의미한다. - OCP(Open Close Principle : 개방 폐쇄의 원칙)
소프트웨어 구성요소(컴포넌트, 클래스, 모듈, 함수)는 확장에는 열려있고, 변경에는 닫혀있어야 한다는 원칙이다.
요구사항의 변경이나 추가사항이 발생하더라도, 기존 구성요소는 수정이 일어나지 말아야 하며, 기존 구성요소를 쉽게 확장하여 재사용 할 수 있어야 한다는 것. - LSP(The Liskov Substitution Principle : 리스코브 치환의 원칙)
서브 타입은 언제나 기반타입으로 교체할 수 있어야 한다.(상속과 구현에 대한 내용)
서브 클래스가 확장에 대한 인터페이스를 준수해야 한다는 것을 의미한다. - ISP(Interface Segration Principle : 인터페이스 분리의 원칙)
한 클래스는 자신이 사용하지 않는 인터페이스는 구현하지 말아야 한다는 원리이다. - 최소한의 인터페이스만을 사용한다. - DIP(Dependency Inversion Principle : 의존성 역전의 원칙)
의존 관계의 역전이란, 구조적 디자인에서 발생하던 하위 레벨 모듈의 변경이 상위 레벨 모듈의 변경을 요구하는 위계관계를 끊는 의미의 역전이다.
실제 사용관계는 바뀌지 않으며, 추상을 매개로 메시지를 주고 받음으로써, 관계를 최대한 느슨하게 만드는 원칙이다.
KISS : Keep It Simple Stupid.
소프트웨어를 설계하는 작업이나, 코딩을 하는 행위에서 되도록이면 간단하고 단순하게 만드는 것이 좋다는 원리이다.(Simple is Best)
소스코드나 설계 내용이 불필요하게 장황하거나 복잡해지는 것을 경계하라는 원칙.
YANGI : You Ain’t Gonna Need It
필요한 작업만을 하라는 의미이다.
프로그램을 작성하다보면, 현재는 사용하지 않지만, 확장성을 고려해 미리 작업하는 경우가 많다. :: 이런 행위를 하지말라는 원칙.
현재는 사용하지 않는 코드들을 작성하다 보면, 설계와 맞지 않거나 붎릴요하게 장황해지는 코드를 확인할 수 있다.
설계나 환경의 변경이 발생되었을 때, 찾기 어렵다. 수정사항도 많아진다…
실제 사용 여부를 판단할 수 없어, 전부를 고쳐야하는 상황이 벌어진다..
이런 경우를 피하기 위해 사용하지 않는 코드는 작성하지 말자는 원칙!