피드로 돌아가기
Seeing the problem: An Introduction to Separation of Concerns
Dev.toDev.to
Backend

Seeing the problem: An Introduction to Separation of Concerns

Cakoko가 Todo CLI 앱 구조 분석을 통해 Separation of Concerns 개념 도입으로 혼재된 책임을 분리하는 코드 설계 원칙 수립

cakoko2026년 3월 24일9beginner

Context

프로그래머들이 작동하는 코드를 작성하는 것에만 집중하여 구조적 문제를 간과하고 있었다. 앱이 성장하면서 혼재된 책임으로 인해 코드 변경이 어려워지고 기능 추가 시 의도하지 않은 부분까지 영향을 받는 상황이 발생했다.

Technical Solution

  • 입력/출력, 상태 변경, 비즈니스 로직, 앱 흐름을 각각 분리하는 책임 경계 명확화: 각 함수가 하나의 역할만 수행하도록 재설계
  • 메뉴 표시와 사용자 입력 처리를 별도 함수로 분리: showMenu() 함수에서 UI 표시만 담당하도록 정의
  • Todo 데이터 조작 로직을 독립적 함수로 구성: addTodo(), toggleTodo(), removeTodo() 함수에서 각각의 데이터 변경만 수행
  • 앱의 메인 루프 제어 로직을 runApp() 함수로 통합: 기능 간의 흐름 제어를 중앙화
  • 혼재된 책임의 경계를 식별하는 코드 리뷰 프로세스 도입: 함수의 길이, 복잡도, 역할의 개수를 검토하여 분리 필요성 판단

Key Takeaway

분리된 책임은 코드의 가독성만 개선하는 것이 아니라 변경의 영향 범위를 제한하고 각 로직의 수정·테스트·재사용을 용이하게 한다. 기술 의사결정에서 책임의 경계를 명확히 하는 것이 구조적으로 건전한 코드의 첫 번째 단계이다.


입출력 로직, 상태 관리, 비즈니스 규칙이 혼재된 기존 함수에서 각 책임을 독립 함수로 분리하면, 특정 기능 변경 시 다른 로직에 미치는 영향을 최소화할 수 있고 단위 테스트 작성이 용이해진다.

원문 읽기
Seeing the problem: An Introduction to Separation of Concerns | Devpick