피드로 돌아가기
Dev.toBackend
원문 읽기
Cakoko가 Todo CLI 앱 구조 분석을 통해 Separation of Concerns 개념 도입으로 혼재된 책임을 분리하는 코드 설계 원칙 수립
Seeing the problem: An Introduction to Separation of Concerns
AI 요약
Context
프로그래머들이 작동하는 코드를 작성하는 것에만 집중하여 구조적 문제를 간과하고 있었다. 앱이 성장하면서 혼재된 책임으로 인해 코드 변경이 어려워지고 기능 추가 시 의도하지 않은 부분까지 영향을 받는 상황이 발생했다.
Technical Solution
- 입력/출력, 상태 변경, 비즈니스 로직, 앱 흐름을 각각 분리하는 책임 경계 명확화: 각 함수가 하나의 역할만 수행하도록 재설계
- 메뉴 표시와 사용자 입력 처리를 별도 함수로 분리: showMenu() 함수에서 UI 표시만 담당하도록 정의
- Todo 데이터 조작 로직을 독립적 함수로 구성: addTodo(), toggleTodo(), removeTodo() 함수에서 각각의 데이터 변경만 수행
- 앱의 메인 루프 제어 로직을 runApp() 함수로 통합: 기능 간의 흐름 제어를 중앙화
- 혼재된 책임의 경계를 식별하는 코드 리뷰 프로세스 도입: 함수의 길이, 복잡도, 역할의 개수를 검토하여 분리 필요성 판단
Key Takeaway
분리된 책임은 코드의 가독성만 개선하는 것이 아니라 변경의 영향 범위를 제한하고 각 로직의 수정·테스트·재사용을 용이하게 한다. 기술 의사결정에서 책임의 경계를 명확히 하는 것이 구조적으로 건전한 코드의 첫 번째 단계이다.
실천 포인트
입출력 로직, 상태 관리, 비즈니스 규칙이 혼재된 기존 함수에서 각 책임을 독립 함수로 분리하면, 특정 기능 변경 시 다른 로직에 미치는 영향을 최소화할 수 있고 단위 테스트 작성이 용이해진다.