코드 가독성과 빼기의 미학

구글 코딩 가이드라인을 보면 코드 가독성(Readability)을 강조한다. 코딩 주짓수 하지 말고 읽기 쉬운 코드를 작성하라는 건데 그래야 다른 개발자들 뿐만 아니라 본인이 본인의 코드를 나중에 볼 때 도움이 된다. 기본적으로 실리콘밸리에서는 개발자들의 이직이 워낙 잦기 때문에 유지 보수의 중요성에 대한 전반적인 인식이 더 있지 않나 싶다. 좋은 코드가 갖는 여러가지 원칙이 있겠지만 아래와 같은 것들을 들어볼 수 있을 듯 하다.


  1. 유지 보수성

    • 코드가 단순할수록 이해하기 쉽고, 수정하거나 확장할 때 실수를 줄일 수 있다.

    • 코드 리뷰, 디버깅, 팀 협업에서 단순한 코드는 더 효율적이다.

  2. 복잡성의 비용

    • 불필요하게 복잡한 코드는 버그를 유발하기 쉽고, 기능을 추가하거나 수정할 때 전체 시스템을 망칠 위험이 커진다

    • 가독성이 떨어지면 개발자는 코드 이해에 더 많은 시간을 소비한다.

  3. KISS 원칙

    • "Keep It Simple, Stupid"라는 원칙은 소프트웨어 설계에서 중요한 가이드라인으로, 과도한 설계나 복잡한 논리를 피하고 간단한 해결책을 찾는 것을 권장한다.

  4. YAGNI 원칙

    • "You Aren’t Gonna Need It"이라는 원칙은 필요하지 않은 기능을 미리 작성하지 말라는 뜻으로, 불필요한 코드 생성을 막는 데 초점이 맞춘다.

  5. DRY 원칙

    • "Don't Repeat Yourself"라는 원칙은 비슷한 코드를 copy-and-paste 형태로 반복하지 말고 함수나 클래스의 형태로 모듈화하는 걸 이야기한다. 그래야 유지보수가 쉬워진다.


경험상 정말 잘 하는 개발자는 코드를 양산하기 보다는 불필요한 코드를 줄이고 단순화하는 특성(빼기의 미학)이 있다. 하지만 대부분의 개발자들은 코드를 양산하는데 집중을 하기 쉬운데 일반적으로 우리는 가산 편향에 빠져 있기 때문이다. 즉 문제 해결을 하려면 뭔가를 새로 추가해야 한다고 생각하기 쉽다는 거다.


잘 하지 못하는 개발자가 코드를 양산하는 이유는 다음과 같다. 잘 하는 프로덕트 매니저와 같이 일을 한다면 아래 이슈 중의 몇 가지는 피할 수 있다.


  1. 기능주의 사고방식

    • "많은 기능 = 좋은 코드"라는 착각에 빠져, 기능 추가에만 집중하는 경우가 많다.

  2. 단순화 기술 부족

    • 복잡한 문제를 단순화하는 기술과 경험이 부족하면, 더 많은 코드로 문제를 해결하려는 경향이 생긴다.

  3. 과잉 설계 (Overengineering)

    • 모든 가능성을 고려해서 너무 많은 구조와 패턴을 적용하려다 보면, 실제로 필요하지 않은 코드가 양산되며 이는 유지보수 문제로 이어진다.


더하기가 아닌 빼기의 미학에 대해 생각해보자. 스티브 잡스는 무언가를 더 추가하려는 유혹에 저항하는 것이야말로 훌륭한 디자인과 혁신의 핵심이라고 말했다. 진정으로 중요한 것에 집중하기 위해 불필요한 것들을 과감히 제거해야 한다는 거다. 스티브 잡스의 아래 문구로 글을 마무리하고자 한다.


"I'm as proud of many of the things we haven't done as the things we have done. Innovation is saying no to a thousand things."

다음 내용이 궁금하다면?

또는

이미 회원이신가요?

2024년 12월 10일 오전 2:03

 • 

저장 101조회 4,541

댓글 0