Clean Code 1장, 깨끗한 코드

jonghyukLee·2023년 9월 2일
0
post-thumbnail

나쁜 코드

  • 외부 요인에 쫓겨 급하게 완성된 나쁜 코드는 유지보수에 상당한 리소스가 요구되며, 결과적으로는 좋지 않은 결과를 초래하기 일쑤다.
  • 시간이 더 걸리더라도 좋은 코드를 작성하고자 하는 태도를 지니는 것이 중요하며, 개발 기간을 넉넉하게 가져오지 못한 것 또한 개발자의 탓이다.
  • 따라서, 언제나 코드를 최대한 깨끗하게 유지하는 습관을 길러야 한다.

조금 공감이 간다.
정해진 배포 날짜에 맞추기 위해, 나는 우선 요구사항에 맞게 기능을 개발하고, 추후에 리팩토링 하면 된다는 생각으로 개발을 진행하곤 한다.
하지만 그 사이에 새로운 개발 업무가 생겨서 일정을 미루거나, 기존에 짜여진 코드와 스타일을 맞추다 보니 선뜻 구조를 변경하기 힘든 적이 많았던 것 같다.
자연스러운 상황이지만, 좋은 코드를 작성하는 습관을 길러, 적은 시간을 투자하더라도 보다 완성도 높은 결과를 도출할 수 있도록 노력해야할 것 같다.

깨끗한 코드란?

유명한 프로그래머들이 깨끗한 코드에 대해 각자의 생각으로 정의한 내용을 간략하게 정리해보았다.

  • 우아하고 효율적인 코드
  • 논리가 간단한 코드
  • 깨끗한 코드는 한 가지를 제대로 한다.
  • 단순하고 직접적이다.
  • 설계자의 의도를 숨기지 않는다.
  • 작성자가 아닌 사람도 읽고, 고치기 쉽다.
  • 의미있는 이름이 붙는다.
  • 목적 달성을 한 가지 방법으로만 할 수 있다.
  • 의존성은 최소이며, 각 의존성을 명확히 정의한다.
  • 문학적으로 표현한다.
  • 주의깊게 짰다는 느낌을 준다.
  • 코드를 읽으면서 짐작했던 기능을 수행한다.
  • 코드가 그 문제를 풀기 위한 언어처럼 보인다.

꽤 생략하고 정리했는데도 많다..

나는 개인적으로
문학적으로 표현한다.
이게 제일 신박하고, 맘에들었다.

문학적으로 표현한다는 의미는,
그저 정해진 기능을 수행하기 위한 코드가 아닌, 하나의 문학 작품을 읽는 듯한 흐름을 보여주는 코드라고 이해했다.

결론

현재 개발 경력이 1년이 안된 시점에서 생각했을 때, 내가 가장 읽기 깔끔하고 이해하기 편했던 코드는 하나의 객체가 어떤 행동을 한 단계 씩 이어나가듯 자연스러운 흐름과 명확한 메서드 이름으로 정의된 비교적 단순한 코딩 스타일이었다.

내 경험이 더 쌓이고, 더 많은 사람들의 코드를 분석하게 된다면 생각이 바뀔 수도 있겠지만, 현재 나의 관점에서는 어떤 경력의 개발자가 분석하던 이해하기 편한 코드가 깨끗한 코드라는 생각이 들었다.

(여담)
사실 이 책을 읽을지 말지 꽤 오래 고민했다.
Clean Code, 위에서 표현하는 깨끗한 코드는 명확히 정의내릴 수 없는 정답이 없는 표현이고, 개개인이 다르게 생각하고 있을텐데, 이런 종류의 책을 읽고 나면 내가 누군가의 코딩 스타일에 덮어 씌워지게 되는 것 같은? 느낌이라 고민만 하며 구매를 미뤘었다.

근데 최근 회사에서 선배 개발자분들과 코드 리뷰, 페어 프로그래밍 등을 진행하는 과정에서 이 책을 구매하기로 결심하게 됐다.

그분들은 개발할 때 패키지 구조부터해서 코딩 스타일까지 모두 각자 선호하는 스타일이 명확했고, 소위 자신만의 코딩 철학이 명확해 보였다.
반면에 나는 그렇지 않았다 ㅠ
피드백 내용에 대해 반론하기 보다는, 나보다 훨씬 경험도 많고 잘하는 분들이기 때문에 있는 그대로 수용하고 있었다.
당연히 그분들의 의견이 나보다 낫다는건 알지만, 내가 작성한 코드에 있어서는 그렇게 작성했던 이유를 명확히하고, 수 많은 고민의 흔적을 기반으로 나만의 스타일을 찾아가고 싶다는 생각이 들었다.

실제로, 이 생각을 갖게된 이후부터는 내가 그렇게 작성했던 이유를 조리있게 말씀드려 보았는데, 내 의도를 이해하고 나니 잘 작성된 코드 같다는 피드백을 주셨다. (물론 수정할 것도 많았다..ㅋㅋ)
하지만 이렇게 고민하는 과정을 통해 내 의견이 명확하게 반영된 코드를 작성해 보면서, 개발자로써 나만의 스타일을 확립해 나가는 성장의 과정이라는 생각이 들어서 왕뿌듯했다.

사실 이전에는 무작정 폭 넓은 기술 스택을 가질수록 실력있는 개발자라고 생각했었는데, 사실 검색하면 다 나오고.. 요즘은 AI 챗봇을 통해 더 빠른 탐색이 가능하기 때문에 그게 중요한게 아니었다는 생각이 든다.

그저 요구된 기능을 찍어내는 코딩기계가 아닌 내 경험과 생각을 코드에 녹여낼 수 있는 대체불가능한 개발자가 되자.

profile
머무르지 않기!

0개의 댓글