본문 바로가기

Clean Code

1일차 TIL 깨끗한 코드란?

DAY 1

오늘의 책 읽기: 추천사 ~ 1장. 깨끗한 코드 까지

 

🤓 책에서 기억하고 싶은 내용

53 철학
정리: 무엇이 어디에 있는가
정돈: 예상하는 위치에 있는가
청소: 필요한 것만 있는가
청결: 일관적인 기준이 있는가
생활화: 관례를 따르고, 습관이 되어있는가

앞으로 코드가 사라질 가망은 전혀 없다. 왜? 코드는 요구사항을 상세히 표현하는 수단이니까! 어느 수준에 이르면 코드의 도움 없이 요구사항을 상세하게 표현해내기란 불가능하다. 추상화도 불가능하다. 정확히 명시하는 수밖에 없다. 기계가 실행할 정도로 상세하게 요구사항을 명시하는 작업, 바로 이것이 프로그래밍이다. 이렇게 명시한 결과가 바로 코드다. 2p

우리 모두는 자신이 짠 쓰레기 코드를 쳐다보며 나중에 손보겠다고 생각한 경험이 있다. 우리 모두는 대충 짠 프로그램이 졸아간다는 사실에 안도감을 느끼며 그래도 안 돌아가는 프로그램보다 돌아가는 쓰레기가 좋다고 스스로를 위로한 경험이 있다. 다시 돌아와 나중에 정리하겠다고 다짐했었다. 물론 글때 그 시절 우리는 르블랑의 법칙을 몰랐다. 나중은 결코 오지 않는다. 4p

코드를 읽는 시간 대 코드를 짜는 시간 비율이 10대 1을 넘는다. 새 코드를 짜면서 우리는 끊임없이 기존 코드를 읽는다. 비율이 이렇게 높으므로 읽기 쉬운 코드가 매우 중요하다. 비록 읽기 쉬운 코드를 짜기가 쉽지는 않더라도 말이다. 하지만 기존 코드를 읽어야 새 코드를 짜므로 읽기 쉽게 만들면 사실은 짜기도 쉬워진다. 18p

 

깨끗한 코드란?
집중
한가지에 집중한다. 너무 많은 일을 하려 애쓰다가 의도가 섞이고 목적이 흐려지기 때문이다. 큰 코드보다 작은 코드에 가치를 둔다. 작으면 작을수록 좋다. 여러 기능을 수행하는 객체나 메서드가 있다면 여러 개로 나눈다.

가독성
  잘 쓴 문장처럼 읽혀야 하며 해결할 문제의 긴장을 명확히 드러내야 한다. 
  또한 다른 사람들이 고치기 쉬워야 한다. 명백하고 단순해야 한다. 의미 있는 이름을 정의해야 한다.

주의
  세세한 사항까지 꼼꼼하게 주의깊게 처리하는 코드여야 한다. 테스트 케이스가 존재해야 한다. 
  고치려고 살펴봐도 딱히 손댈 곳이 없어야한다. 작성자가 이미 모든 사항으로 고려했으므로.

중복
  같은 작업이 여러 차례 반복한다면 코드가 아이디어를 제대로 표현하지 못한다는 증거다.



🥰 오늘의 소감

아직까지 실제 배포 및 운영을 위한 프로젝트를 하지 않아 나쁜 코드로 치르는 대가들에 대해 깊게 생각해 본적이 없다. 기능이 잘 돌아가는 것만 확인하고 그 상태로 프로젝트를 멈췄으니까. (사실상 이 단계까지도 우여곡절이 많았지만... ) 책을 읽으면서 실제 회사의 서비스의 사례를 알게되니 나쁜 코드로 치르는 대가는 내가 생각한 것보다 훨씬 끔찍했다. 초반에는 진도가 빠르지만 점차 나쁜 코드들에 짓눌려 생산성이 점차 느려지고 새인력을 추가했지만 그들은 기존 시스템에 조예가 없으므로 지지부진... 결국 재설계를 진행하지만 해당 시스템이 기존 시스템을 대체하기까지는 엄청난 시간과 비용이 든다는 것까지... 오히려 너무 현실적이라서 괴로웠다.

 

"하지만 시간 때문에 어쩔 수 없다고!"라고 자기위로했던 지난 날의 모습을 되돌아보게 되었다. 무슨 일이 있더라도 좋은 코드를 사수하는 일은 프로그래머들의 책임이라는 말에 동의하게 되었다. 마치 환자가 시간이 없으니 수술 전에 손을 씻지 말라고 요구하더라도 의사는 거부해야하는 것처럼.

 

잘그린 그림과 못그린 그림을 구분할 수 있다고 해서 그림을 잘 그릴 수 있는 것은 아닌 것처럼, 깨끗한 코드와 나쁜 코드를 구분할 줄 안다고 해서 깨끗한 코드를 작성할 줄 안다는 뜻은 아니라는 것이 인상 깊었다. 실제로도 프로젝트 도중에 나도 코드를 짜면서 "이게 맞나...? 더러운데"라고 생각했지만 막상 바꾸려면 어떻게 수정해야할지 모르는 경우가 너무 많았다. 책을 읽으면서 깨끗한 코드로 수정하는 법에 대해 익힐 수 있으면 좋겠다. 

 

프로젝트를 잘 마무리하기 위한 유일한 방법은 언제나 코드를 깨끗이 유지하는 것이다. 앞으로 체크아웃할 때보다 좀 더 깨끗한 코드를 체크인하는 습관을 가져봐야겠다. 변수 이름 개선하기, 조금 긴 함수 분할하기, 약간의 중복 제거하기, 복잡한 if문 정리하기 등등 하나만이라도 해보자.

 

🤔 궁금한 내용

LeBlanc’s law: Later equals never.

'Clean Code' 카테고리의 다른 글

7일차 TIL 형식 맞추기  (0) 2024.03.10
5, 6일차 TIL 주석  (0) 2024.03.07
3, 4일차 TIL 함수  (1) 2024.03.05
2일차 TIL 의미 있는 이름  (1) 2024.03.04
Clean Code 책 구매 인증  (0) 2024.03.02