JavaScript 클린 코드란 무엇인가 — 사고방식 정렬
클린 코드를 규칙이 아닌 의사결정의 누적으로 보고 JS에서 변경·버그·리뷰 비용을 줄이는 사고방식 정렬
Posted
By okorion
JavaScript 클린 코드란 무엇인가 — 사고방식 정렬
1) 한 문단 요약 — 이 글에서 얻는 것 3가지
이 글은 클린 코드를 규칙이나 스타일이 아닌 ‘의사결정의 누적’으로 재정의한다. 자바스크립트에서 클린 코드가 특히 어려운 구조적 이유를 설명하고, 사례 기반 + 의식적 수련으로 사고방식을 교정하는 현실적인 학습 루틴을 제시한다. 마지막으로, 수강 전·후 반복해서 참고할 수 있는 재학습 인덱스와 실전 체크리스트를 제공한다.
2) 클린 코드가 필요한 이유 — 실무 비용 관점
클린 코드는 미학의 문제가 아니다. 비용의 문제다.
1. 변경 비용
- 요구사항은 반드시 바뀐다.
- 클린하지 않은 코드는 “어디를 고쳐야 하는지” 판단하는 데 시간이 든다.
- 변경 시 영향 범위를 예측할 수 없는 코드가 가장 비싸다.
2. 버그 비용
- 자바스크립트는 런타임까지 오류가 숨어 있는 경우가 많다.
- 읽기 어려운 코드일수록 버그가 숨어들 공간이 많다.
- 버그 자체보다, 버그의 원인을 찾는 시간이 더 비싸다.
3. 리뷰 비용
- 리뷰는 로직을 검증하는 자리이지, 해석 대회가 아니다.
- “이 코드가 뭘 하려는지” 설명이 필요하다면 이미 비용이 발생한 상태다.
- 클린 코드는 리뷰어의 인지 부하를 최소화한다.
정리하면, 클린 코드는 “예쁘게 쓰자”가 아니라 👉 변경·버그·리뷰 비용을 구조적으로 낮추는 선택의 집합이다.
3) 자바스크립트에서 특히 클린 코드가 어려운 이유
자바스크립트는 클린 코드에 불리한 언어다. 이유는 명확하다.
1. 암묵성 (Implicit Behavior)
- 타입, this 바인딩, 형변환, 스코프 등 많은 것이 암묵적으로 동작한다.
- 코드가 짧아질수록 의미가 사라질 위험이 커진다.
1
2
3
4
5
// Bad: 의도가 드러나지 않는다
if (value) { ... }
// Better: 판단 기준이 명시된다
if (value !== null && value !== undefined) { ... }
2. 과도한 유연성
- 같은 문제를 해결하는 방법이 너무 많다.
- “동작하는 코드”와 “이해 가능한 코드”의 간극이 크다.
- 스타일 가이드만으로는 이 선택을 대신해줄 수 없다.
3. 런타임 의존
- 많은 오류가 실행 전에는 드러나지 않는다.
- 결국 코드를 읽고 예측하는 능력이 핵심이 된다.
- 이 능력은 규칙 암기가 아니라 사고 훈련으로만 길러진다.
4) 수련 루틴 — Bad → Better → 원칙 → 재적용
(하루 30분 기준)
이 강의의 핵심은 “정답을 외우는 것”이 아니라 의식적으로 사고를 교정하는 과정이다.
Step 1. Bad Case (10분)
- 의도적으로 읽기 어려운 코드, 실제로 문제가 있었던 코드 선택
- “왜 이 코드는 위험한가”를 말로 설명해본다
1
2
3
4
5
6
7
8
// Bad
function process(a, b, c) {
if (a && b) {
if (!c) {
doSomething();
}
}
}
Step 2. Better Case (10분)
- 같은 동작을 더 명확한 구조로 다시 작성
- 조건, 책임, 흐름을 분리
1
2
3
4
5
6
7
8
// Better
function canProcess({ a, b, c }) {
return a && b && !c;
}
if (canProcess(params)) {
doSomething();
}
Step 3. 원칙 추출 (5분)
- “조건은 함수로 추출하면 읽기 쉬워진다”
- “부정 조건은 의미를 숨긴다”
Step 4. 재적용 (5분)
- 오늘 작성한 코드 1곳에 같은 원칙을 강제로 적용
- 효과가 없었다면 원칙을 수정
이 루틴을 반복하면, 스타일이 아니라 의사결정 패턴이 바뀐다.
5) 흔한 오해 5개와 반박
“클린 코드는 규칙을 잘 지키는 것이다” → 규칙은 도구다. 상황 판단을 대신해주지 않는다.
“유명 스타일 가이드를 따르면 안전하다” → 스타일 가이드는 평균값이다. 맥락 없는 적용은 사고를 멈춘다.
“짧은 코드가 좋은 코드다” → 짧은 코드 ≠ 읽히는 코드. 의도가 보이지 않으면 실패다.
“네임드 개발자 코드가 정답이다” → 그 코드가 나온 맥락을 모르면 위험하다.
“클린 코드는 나중에 해도 된다” → 나중은 없다. 구조는 초기에만 싸게 바꿀 수 있다.
7) 오늘 코드에 바로 적용할 체크리스트 10가지
- 이 함수의 의도를 한 문장으로 말할 수 있는가
- 조건문이 무엇을 판단하는지 이름으로 드러나는가
- 부정 조건을 긍정 조건으로 바꿀 수 있는가
- 암묵적 동작에 의존하고 있지는 않은가
- “왜 이렇게 했는지” 주석 없이 설명 가능한가
- 하나의 함수가 하나의 결정만 내리는가
- 스타일이 아니라 맥락을 기준으로 선택했는가
- 리뷰어가 처음 봐도 흐름을 따라갈 수 있는가
- 변경 시 영향 범위를 예측할 수 있는가
- 이 코드가 6개월 뒤의 나에게도 친절한가
코드 리뷰에서 바로 쓰는 질문 7개
- 이 코드의 핵심 책임은 무엇인가?
- 이 조건이 필요한 이유를 말로 설명할 수 있는가?
- 여기서 가장 위험한 의사결정은 무엇인가?
- 이 코드를 더 읽기 쉽게 만들 수 있는 이름은 없는가?
- 암묵적으로 기대하는 전제는 무엇인가?
- 요구사항이 바뀌면 어디가 가장 먼저 깨질까?
- 이 구조를 선택한 이유는 무엇인가?
This post is licensed under CC BY 4.0 by the author.
