kui-vault/02.Volume/CleanCode/단순함의 노하우(Introduction).md

4.0 KiB

id created tags
단순함의 노하우 20260317 2026-03-17 10:53
클린코드

💡 생각

[!note] 코드는 무조건 단순해야 한다. 단순한 코드란 읽기 쉽고 명확한(가독성이 좋은) 코드다.

단순한 코드 ? 파레토의 법칙을 프로그래밍에 응용

- 모든 코드를 100%의 노력으로 완벽하고 좋은 성능으로 만들려고 하면 많은 리소스 (인력이든 시간이든 뭐든..)를 필요로 하게 됨.

프로그램 실행 시간의 80%는 단 20%의 코드(핵심 알고리즘, 반복문 등)에서 소비됩니다. 따라서 나머지 80%의 코드는 성능을 위해 복잡하게 짤 필요 없이, 최대한 단순하고 읽기 쉽게 유지하는 것이 이득입니다.

- 80% 의 자주 쓰지 않는 코드에 집중하고 자원을 낭비하지 말라.

훌륭한 구조를 가지고 좋은 성능을 보이는 코드라고 하더라도 자주 쓰이지 않고 코드 작성에 너무 많은 시간을 들였다면 그것은 과도한 낭비가 될 가능성이 높다. YAGNI(You Ain't Gonna Need It)

  • 지금 필요 없는 건 하지 마라.

선택과 집중이 필요하다.

  • 불필요한 최적화 거부: 병목 지점이 아닌 나머지 80%의 코드를 최적화하느라 코드를 꼬아놓지 마세요. 그 부분은 그냥 단순함 그 자체로 두는 것이 유지보수에 훨씬 유리합니다.

  • 복잡성 격리: 정말 성능이 중요해서 복잡한 로직이 들어가야 한다면, 그 20%의 영역만 따로 분리(격리)하고 나머지는 깨끗하게 유지하세요.

[!note] "80%의 효과를 내는 20%의 단순한 로직을 먼저 작성하라."

결국 저자가 하고 싶은 말은

  1. 불필요한 단계를 최대한 제거하고
  2. 사람이 읽기 좋은 형태로 바꿔주고
  3. 알고리즘 최적화하는것

저자인 크리스티안 마이어가 경계하라고 강조하는 것

[!warning] "0.001초를 줄이려고 코드 10줄을 50줄로 늘리며 가독성을 해치는 행위"

이런 경우는 최적화가 단순화를 방해하는 상황이 됩니다. 반대로 복잡한 계산식을 수학적으로 정리해 한 줄로 줄이는 것은 최적화이자 동시에 완벽한 단순화가 되는 것이죠.

사람이 읽기 좋은 코드...? 코드의 가독성

[!question] Q. 사람이 읽기 좋은 형태의 코드라는건 어떤걸 의미하는거야? A. 사람이 읽기 좋은 코드, 즉 가독성이 높은 코드는 단순히 "예쁜 코드"를 넘어 코드를 읽는 사람의 뇌가 에너지를 최소한으로 쓰게 만드는 코드를 의미합니다.

그리고 데이터가 늘어나도 잘 버티는 코드

데이터가 늘어나도 잘 버티는 코드는 보통 확장성(Scalability) 이 좋은 코드라고 부릅니다.

데이터가 10건일 때는 0.001초 만에 끝나던 로직이, 데이터가 100만 건으로 늘어났을 때도 서비스가 죽지 않고 합리적인 시간 내에 결과를 내놓는 것을 의미합니다.

[!question] Q. 일단은 단순하게 만들고 나중에 문제가 생길경우에 집중해서 개선하라고 앞에서 계속 그러다가 갑자기 업스케일링을 염두해둬야한다는 말을 하면 앞뒤가 잘 안맞는거 아니야? 업스케일링에 유리한 코드를 미리 설계하고 개발하는거 자체도 일일텐데? A. 정말 날카롭고 합리적인 지적입니다! "일단 단순하게 만들라"는 말과 "나중에 커질 것을 대비(확장성/업스케일링)하라"는 말이 얼핏 들으면 서로 충돌하는 것처럼 느껴질 수 있습니다.

하지만 이 책과 클린 코드의 철학이 말하는 핵심은 유연한 단순함에 있습니다.

"지금 당장 필요하지 않은 기능(Over-engineering)은 넣지 않되, 나중에 그 기능을 넣고 싶을 때 코드 전체를 부수지 않아도 되게 끔 '문(Interface/Module)'만 잘 만들어 두는 것"