피드로 돌아가기
Dev.toBackend
원문 읽기
코드 가독성 및 시스템 안정성 확보를 위한 Meaningful Naming 전략
Naming — Meaningful Naming
AI 요약
Context
모호하거나 잘못된 명명(Naming)으로 인해 코드의 의도를 오해하여 발생하는 Side Effect와 버그가 시스템 유지보수 비용을 증가시킴. 특히 명명과 실제 동작의 불일치(Drift)는 엔지니어가 함수 내부 로직을 매번 확인하게 만들어 개발 생산성을 저하시키는 병목 지점으로 작용함.
Technical Solution
- Intent 및 Unit 중심 설계: 구현 세부 사항 대신 함수의 의도와 반환값의 단위를 명시하여 추상화 수준을 최적화
- Convention 기반 타입 추론: Boolean 타입은 is/has/can 접두사를, 함수는 동사(fetch, calculate, assert)를 사용하여 명명만으로 행위를 예측하는 구조 설계
- Side Effect 명시적 분리: get/is/has는 Pure Function으로 제한하고, DB 쓰기 등 상태 변경이 발생하는 경우 update, save, mark 등 명확한 동사를 사용하여 예기치 못한 성능 저하 및 데이터 오염 방지
- Unit-in-Name 패턴: timeoutMs, priceInCents와 같이 변수명에 단위를 직접 포함하여 단위 변환 오류로 인한 런타임 버그 원천 차단
- Drift 관리 프로세스: 기능 변경 시 명칭을 동기화하는 리팩토링 과정을 개발 워크플로우에 포함하여 명칭과 동작의 일치성 유지
실천 포인트
- [ ] get/is/has 접두사를 가진 함수 내부에 Side Effect(DB Write 등)가 포함되어 있는가? - [ ] 시간, 크기, 금액 관련 변수명에 단위(Ms, Bytes, Cents 등)가 명시되어 있는가? - [ ] d, tmp, data 등 모호한 단일 문자로 구성된 변수가 존재하며, 이를 Intent 기반 명칭으로 대체 가능한가? - [ ] 기능 수정 후 변경된 행위가 기존 함수명과 일치하지 않는 'Naming Drift' 현상이 발생하지 않았는가? - [ ] Boolean 변수에 부정형(isNotDisabled)을 사용하여 이중 부정으로 인한 논리적 혼란을 야기하고 있지는 않은가?