
코드 없이 이해하는 '단일책임원칙(SRP)' 이야기
단일책임원칙(SRP)을 비유를 통해 쉽게 풀어낸 설계 가이드입니다. 책임과 기능의 구분, 설계 트레이드오프를 함께 다뤘습니다.

단일책임원칙(SRP)을 비유를 통해 쉽게 풀어낸 설계 가이드입니다. 책임과 기능의 구분, 설계 트레이드오프를 함께 다뤘습니다.

Software 3.0 시대의 의미와 Claude Code를 기존 레이어드 아키텍처로 해석하는 관점을 정리했습니다. 또한 HITL, 토큰 관리, Skill 설계에서의 실전 주의점을 함께 다뤘습니다.

페이지 타입별 필터 정책이 코드 곳곳에 흩어져 있어 확장과 유지보수가 어려운 문제를 리팩토링했습니다. 정책은 전략으로, 생성은 공통 흐름으로 분리해 변경 지점을 명확히 했습니다.

숙박 전시 도메인의 복잡한 노출 로직을 Kotlin DSL로 표현한 적용 사례를 소개했습니다. 가독성은 좋아졌지만 내부 구현 복잡도와 팀의 러닝 커브가 커지는 트레이드오프도 있었습니다.

테마처럼 값만 다른 경우에는 상속보다 값 객체로 표현하는 편이 더 간결하다고 정리했습니다. Kotlin의 비상속 클래스 특성을 활용해 동적 변경 가능성과 불필요한 로직을 줄이는 방법을 제안했습니다.
![[번역글] 핵심은 인지 부하입니다 - 인지 부하와 소프트웨어 개발 효율성에 대한 고찰](https://devocean.sk.com/thumnail/2025/9/9/05598bffb7699521eb9e615dc256eb305147ef589de5e003565cbc0c522f6069.png)

인지 부하를 줄이는 설계가 개발 효율성과 유지보수성을 높이는 핵심이라고 설명합니다. 복잡한 조건문, 얕은 모듈, 과도한 추상화 대신 단순한 인터페이스와 명확한 구조를 권장합니다.

널 객체 패턴은 호출부를 단순하게 만들 수 있지만, 오류 값과 정상 값을 구분해야 할 때는 부적합했습니다. 타입으로 구분 가능한 경우에는 Optional이나 null 같은 정적 표현을 우선 고려해야 했습니다.

책임을 분리하면 코드가 더 깔끔해질 것 같지만, 제약 조건과 의존성이 오히려 흩어질 수 있었습니다. 클래스 분할뿐 아니라 호출자 부담과 결합도까지 함께 살펴야 했습니다.

양방향 변환은 한쪽 로직을 기준으로 다른 쪽을 유도하는 편이 안전했습니다. 중복 값과 누락은 테스트로 보강하는 방식이 유효했습니다.

테스트 코드가 어려워지는 원인을 고수준 목과 얽힌 설계 문제로 설명했습니다. 험블 객체 패턴과 인터페이스로 테스트하기 쉬운 구조를 만드는 방법을 다뤘습니다.


FastAPI의 Depends()로 의존성 주입을 적용하는 방법을 설명했습니다. 비즈니스 로직과 구현체를 분리해 유연성과 테스트 용이성을 높이는 구조를 소개했습니다.


리브랜딩 후 사용자에게 오류처럼 보이던 UI icon을 폰트 기반 디자인과 명확한 가이드로 개선했습니다. 그 결과 VOC가 감소하고 아이콘 제작 리소스도 크게 줄었습니다.