Home 좋은 객체 지향 프로그래밍을 위한 방법: SOLID
Post
Cancel

좋은 객체 지향 프로그래밍을 위한 방법: SOLID

클린 코드로 유명한 로버트 마틴의 SOLID 5가지 원칙을 알아보자

SRP(Single Responsibility Principle)

첫 번째는 단일 책임 원칙이다. 간단하게 말하면 하나의 클래스는 하나의 책임을 가져야 한다는 원칙이다. 하나의 책임이라는 말은 규모가 클 수도 있고 작을 수도 있다. 상황에 따라 다를 것이고, 중요한 기준은 “변경”이다. 코드에서 변경이 발생했을 때 파급효과가 적다면 SRP원칙을 잘 따랐다고 볼 수 있다.

SRP원칙의 예시로는 UI가 변경되거나 객체의 생성과 사용을 분리하는 경우이다.

OCP(Open/Closed Principle)

개방-폐쇄 원칙은 소프트웨어 요소는 확장에는 개방되어 있어야 하고 변경에는 닫혀 있어야 한다는 의미이다. 요구사항의 변경이나 추가 사항이 발생해도 기존 구성요소는 수정이 일어나지 않도록 해야 한다는 의미이다. OCP 원칙을 만족하기 위해 추상화와 다형성의 특징을 사용할 수 있다.

구현 객체를 변경하려면 클라이언트 코드 변경이 필요하다. 이는 OCP 원칙을 따르지 못하기 때문에 객체를 생성하고, 연관 관계를 맺어주는 별도의 조립 설정자가 필요하다.

OCP원칙을 만족하기 위해 변경될 것과 변경되지 않을 것을 명확히 해야 한다.

LSP(Liskov Substitution Principle)

리스코프 치환 원칙은 객체는 프로그램의 정확성을 깨뜨리지 않으면서 하위 타입의 인스턴스로 바꿀 수 있어야 한다는 의미이다. 또한 자식 클래스의 상세 구현체를 부모 클래스는 알 필요가 없다는 뜻이다. 서브 클래스가 확장에 대한 인터페이스를 준수해야 하는 것을 의미한다. 자식 클래스가 부모 클래스 메소드가 가진 의미를 해치지 않는 선에서 재정의가 가능하다.

ISP(Interface Segregation Principle)

인터페이스 분리 원칙은 자신이 사용하지 않는 인터페이스는 구현하지 말아야 한다는 원칙이다. 특정 클라이언트를 위한 인터페이스 여러개가 범용 인터페이스보다 낫다는 의미이다. 이렇게 구현하게 되면 인터페이스가 명확해지고, 대체 가능성이 높아진다.

하나의 큰 인터페이스를 만들기보다 구체적인 작은 단위로 분리하여 필요한 인터페이스만 상속하여 ISP 원칙을 만족하게 된다. 인터페이스의 크기가 크다는 것은 한번에 지켜야할 약속이 많아지는것을 의미하므로 분리하는 것이 좋다.

DIP(Dependency Inversion Principle)

의존 관계 역전 원칙은 클라이언트 코드가 구현 클래스에 의존하지 않고 인터페이스에 의존하게 하는 것이다. 프로그래머는 구체적인 클래스에 의존하지 말고 추상화된 클래스에 의존해야 한다는 뜻이다.

This post is licensed under CC BY 4.0 by the author.

Vue 프로젝트 생성과 todo list 만들기

MYSQL event scheduler로 데이터 조작하기