N° 01 — 목록
'Principles' (8)
-
Architecture & Design/Software ArchitecturePrinciples - 02. 추상화와 깊은 모듈
변속기는 "기어 1~6"만 보여준다 — 깊은 모듈과 얕은 모듈자동차 변속기를 생각해 보자. 운전자에게 보이는 인터페이스는 기어 레버 — "1단에서 6단으로 옮긴다"가 전부다. 하지만 그 레버 뒤에는 수백 개의 톱니바퀴와 유압 시스템과 센서가 얽혀 있다. 운전자는 내부를 몰라도 운전할 수 있고, 변속기 제조사가 내부를 개선해도 운전자는 기어 레버만 보면 된다.이것이 깊은 모듈(deep module)이다 — 인터페이스는 단순하지만 구현은 풍부하다. John Ousterhout은 에서 모듈의 깊이를 "인터페이스의 복잡성 대 구현의 복잡성" 비율로 정의했다. 깊은 모듈은 적은 인터페이스(노출)로 많은 구현(숨김)을 감싼다. 얕은 모듈은 그 반대다 — 인터페이스가 복잡한데 구현이 얄팩하다.깊은 모듈 vs 얕은 모..
-
Architecture & Design/Software ArchitecturePrinciples - 01. SOLID 원칙
주방에 요리사가 한 명일 때 문제가 생긴다 — SOLID 다섯 원칙레스토랑 주방을 상상해 보자. 한 요리사가 그릴·샐러드·디저트를 전부 담당한다. 그릴이 늦어지면 디저트도 밀리고, 샐러드 레시피를 바꾸면 그릴 타이밍도 흐트러진다. 이 요리사에게 "한 가지 역할만 하라"고 하는 것이 SRP다. 반대로, 새 메뉴를 추가할 때 기존 레시피를 다시 써야 한다면 주방 구조가 문제인 것이다 — 이게 OCP가 다루는 영역이다.Robert C. Martin이 에서 정리한 SOLID는 다섯 개의 설계 원칙이다. 각 원칙은 독립된 "건강 지표"처럼, 어느 것이 빨간불인지를 보면 설계의 어디가 아픈지 진단할 수 있다. 다섯을 동시에 완벽히 지킬 필요는 없지만, 어느 것을 어기고 있는지 아는 것이 설계 개선의 출발점이다.이 ..