JS 개발자가 알려주는 SOLID 원칙

객체지향 프로그래밍의 5가지 설계 원칙으로 유지 보수와 확장이 쉬운 시스템을 만들기위해 정의 되었다.

SOLID 원칙들은 프로그래머가 읽기 쉽고 확장하기 쉽게 만들기위해 리팩토링하여 코드 스멜을 제거하기 위해 적용할 수 있는 지침이다.

  • SRP(Single Responsibility Principle), 단일 책임 원칙
  • OCP(Open Closed Principle), 개방 폐쇄 원칙
  • LSP(Liskov Substitution Principle), 리스코프 치환 원칙
  • ISP(Interface Segregation Principle), 인터페이스 분리 원칙
  • DIP(Dependency Inversion Principle), 의존 역전 원칙

단일 책임 원칙, SRP(Single-Responsibility Principle)

어떤 클래스를 변경해야 하는 이유는 오직 하나뿐이어야 한다. - 로버트 C.마틴

즉, 클래스는 하나의 역활만 수행해야 한다.

Untitled

초기 거래소 클래스는 지갑 관리의 역활만 했지만, 필요로하는 기능이 많아지면서 역활을 분리할 필요가 있었다.

단일 책임 원칙을 적용하여 역활마다 클래스를 분리

단일 책임 원칙을 적용하여 역활마다 클래스를 분리

의존 역전 원칙, DIP(Dependency-Inversion Principle)

자신보다 변하기 쉬운 것에 의존하지 마라

상위 레벨 모듈에 하위 레벨 모듈에 의존해서는 안되지만 추상화에 의존해야 한다.

각각의 인증에 대한 클래스가 따로 구현되어 있다. 하지만 공통된 인증 클래스(Strategy)를 사용하고 있고, 각각의 인증 정보를 확인하는 로직이 다르다.

Untitled

여기서 인증에 대해 추가적인 정보가 필요할 경우

예를 들어, 일반 사용자 권한을 확인해야 할 경우 기존 클래스를 확장하거나 분리해야 한다. 때문에 기존 인증 클래스(Strategy)를 추상화하여 의존 관계를 역전시킴으로써 확장성과 변경에 안전하게 처리할 수 있다.

Untitled