3.3.3 모듈 생성의 원칙
임의든 즉시든 모듈을 생성할 때는 다음 사항을 유념하기 바란다.
첫째, 단일 책임 원칙을 잊지 말고 한 모듈에 한 가지 일만 시키자. 그래야 결속력이 강하고 다루기 쉬운, 아담한 API를 작성하게 된다.
둘째, 모듈 자신이 쓸 객체가 필요하다면 의존성 주입 형태로 (직접 또는 팩토리 주입 형태로) 이 객체를 제공하는 방안을 고려하라.
셋째, 다른 객체 로직을 확장하는 모듈은 해당 로직의 의도가 바뀌지 않도록 분명히 밝혀라(리스코프 치환 원칙).
표 3-3은 모듈 패턴에 관한 SOLID/DRY 요약표다.
▼ 표 3-3 모듈의 SOLID/DRY 요약표
원칙 |
결과 |
단일 책임 |
모듈은 태생 자체가 의존성 주입과 친화적이고 애스팩트 지향적이라 단일 책임 유지는 어렵지 않다. |
개방/폐쇄 |
다른 모듈에 주입하는 형태로 얼마든지 확장할 수 있다. 통제해야 할 모듈은 수정하지 못하게 차단할 수 있다. |
리스코프 치환 |
의존성의 의미를 뒤바꾸는 일만 없으면 별문제 없다. |
인터페이스 분리 |
결합된 API 모듈 자체가 자바스크립트에서 분리된 인터페이스나 다름없다. |
의존성 역전 |
임의 모듈은 의존성으로 주입하기 쉽다. 모듈이 어떤 형태든 다른 모듈에 주입할 수 있다. |
DRY(반복하지 마라) |
제대로만 쓴다면 DRY한 코드를 유지하는 데 아주 좋은 방법이다. |