[Clean Code] #1 깨끗한 코드

2023. 8. 4. 08:39
궁극적으로 코드는 요구사항을 표현하는 언어라는 사실을 명심한다.

 

코드가 존재하리라

프로그래밍: 기계가 실행할 정도로 상세하게 요구사항을 명시하는 작업, 정밀한 표현이 필요한 순간이 필수적이기에 코드는 항상 존재할 것이다.

 

나쁜 코드

출시에 바빠 코드를 마구 짰고, 감당이 불가능한 수준에 이르러 회사가 망하기까지 이르렀다.

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

 

나쁜 코드로 치르는 대가

"나쁜 코드가 쌓일수록 팀 생산성은 떨어진다. 그러다가 마침내 0에 근접한다."

 

원대한 재설계의 꿈

생산성이 바닥이라는 사실에 개발팀은 관리층에게 재설계를 요구하는 단계가 온다.

새로운 프로젝트, 새로운 팀이 구성되고 모두 합류하고 싶어한다. 기존 시스템 기능을 모드 제공하는 새 시스템을 내놓아야 한다. 기존 시스템에 더해지는 변경 또한 모두 따라잡아야 한다. 기존 시스템을 따라잡기 위해 물리적으로 상당시간이 소요되며, 그 과정에서 팀원이 교체되며 새로운 팀원들은 또 새 시스템을 설계하자고 나선다.

이 모든 일들을 겪지 않으려면, 시간을 들여 깨끗한 코드를 만드는 노력이 비용을 절감하는 방법일 뿐만 아니라 전문가로서 살아남는 길이다.

 

태도

"코드가 정말이지 너무도 엉망이라 몇 시간으로 예상한 업무가 몇 주로 늘어진 경험이 있는가?"

온갖 이유를 들이대도 잘못은 전적으로 전문가답지 못한 우리 프로그래머에게 있다.

일정에 쫓기더라도 대다수 관리자는 좋은 코드를 원한다. 일정과 요구사항을 강력하게 밀어붙이는 이유는 그것이 그들의 책임이기 때문에.

좋은 코드를 사수하는 일은 바로 우리 프로그래머들의 책임이다.

"나쁜 코드의 위험을 이해하지 못하는 관리자 말을 그대로 따르는 행동은 전문가답지 못하다"

 

원초적 난제

"기한을 맞추는 유일한 방법은, 그러니까 빨리 가는 유일한 방법은, 언제나 코드를 최대한 깨끗하게 유지하는 습관이다."

 

깨끗한 코드라는 예술?

깨끗한 코드와 나쁜 코드를 구문할 줄 안다고 깨끗한 코드를 작성할 줄 안다는 뜻은 아니다.

코드 감각을 타고난 사람도 있고, 투쟁해서 얻어야 하는 사람도 있다. 깨끗한 코드를 위해선 '코드 감각'이 필요하다.

 

깨끗한 코드란?

우아하고 효율적인 코드, 철저한 오류 처리

단순하고 직접적인 코드, 잘 쓴 문장처럼 읽히는 코드

추측이 아닌 사실에 기반하고, 필요한 내용만 담아야 함.

다른 사람이 고치기 쉬운 코드, 테스트 케이스가 없는 코드는 깨끗하지 않은 코드임

주의깊게 작성한 코드, 시간을 들여 깔끔하고 단정하게 정리한 코드

모든 테스트를 통과하며 중복이 없고, 모든 설계 아이디어를 표현하는 코드

"중복을 피하라. 한 기능만 수행하라. 제대로 표현하라. 작게 추상화하라."

언어를 단순하게 보이도록 만드는 열쇠는 프로그래머다!

 

우리들 생각

이 책은 저자가 속한 오브젝트 멘토 진영이 생각하는 깨끗한 코드를 설명한다. 절대적으로 '옳다'라는 단정은 금물이며, 이들의 시각을 이해하고 존중하면 될 것이다.

 

우리는 저자다

코드를 짤 때 우리는 저자라는 사실과 판단을 내릴 독자가 있다는 사실을 기억하자.

"새 코드를 짜면서 우리는 끊임없이 기존 코드를 읽는다. ... 기존 코드를 읽어야 새 코드를 짜므로 읽기 쉽게 만들면 사실은 짜기도 쉬워진다."

 

보이스카우트 규칙

잘 짠 코드가 전부가 아니고, 시간이 지나도 계속해서 깨끗하게 유지해야 한다. 한꺼번에 많은 시간과 노력을 투자하는 것이 아니라, 변수 이름 하나를 개선하고, 조금 긴 함수 하나를 분할하고, 약간의 중복을 제거하고, 복잡한 if문 하나를 정리하면 충분하다.

 

결론

이 책을 읽는다고 뛰어난 프로그래머가 된다는 보장은 없다. 뛰어난 프로그래머가 생각하는 방식과 그들이 사용하는 기술과 기교와 도구를 소개할 뿐이다.

'개발도서' 카테고리의 다른 글

YOU DON'T KNOW JS #02  (0) 2021.07.20
YOU DON'T KNOW JS #01  (1) 2021.07.19

BELATED ARTICLES

more