본문 바로가기
공부내용

TIL_클린코드_추천사~1장

by 바나나하나 2022. 4. 23.
반응형

오늘 읽은 범위

1장. 깨끗한 코드

책에서 기억하고 싶은 내용

추천사

‘신은 세세함에 깃들어 있다.’ - 건축가 루트비히 미스 반 데어 로에

읽기 좋은 코드는 돌아가는 코드만큼이나 중요하다. xxv

청결은 경건과 마찬가지다.

작은 것에도 충실한 사람이 큰 것에도 충실하다. 나중으로 미루는 대신 책임을 지는 동안 리팩터링을 수행해 이어질 “큰” 결정에 대비하는 자세는 어떤가? 호미로 막을 일을 가래로 막지 마라 일찍 일어나는 새가 벌레를 잡는다. 오늘 할 수 있는 일을 내일로 미루지 마라.

그것이 바로 정리다. 그렇게 모든 변수 이름에 주목해야 한다. 첫아이 이름을 짓듯이 심사숙고해서 변수 이름을 지어야 한다.

이렇듯 세세함에 몰두하는 태도는 탁월함을 추구하는 모든 노력에서 공통으로 발견된다.

품질은 하늘에서 뚝 떨어진 위대한 방법론이 아니라 사심 없이 기울이는 무수한 관심에서 얻어진다.

들어가면서

깨끗한 코드를 작성하는 방법은 배우기 어렵다. 단순히 원칙과 패턴을 안다고 깨끗한 코드가 나오지 않는다. 고생을 해야 한다. 스스로 연습하고 실패도 맛봐야 한다. 남들이 시도하다 실패하는 모습도 봐야 한다. 그들이 넘어지고 일어서는 모습도 봐야 한다. 결정을 내리느라 고민하는 모습, 잘못된 결정으로 대가를 치르는 모습도 봐야 한다.

1장 깨끗한 코드

20여년이 지난 후 그 회사 초창기 직원을 우연히 만나 자초지종을 들었다. 원인은 내가 짐작하던 바였다. 그들은 출시에 바빠 코드를 마구 짰다. 기능을 추가할수록 코드는 엉망이 되어갔고, 결국은 감당이 불가능한 수준에 이르렀다. 회사가 망한 원인은 바로 나쁜 코드 탓이었다. - 4페이지

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

프로그래머도 마찬가지다. 나쁜 코드의 위험을 이해하지 못하는 관리자 말을 그대로 따르는 행동은 전문가답지 못하다. - 7페이지

나쁜 코드를 양산하면 기한을 맞추지 못한다. 오히려 엉망진창인 상태로 인해 속도가 곧바로 늦어지고, 결국 기한을 놓친다. 기한을 맞추는 유일한 방법은, 그러니까 빨리 가는 유일한 방법은, 언제나 코드를 최대한 깨끗하게 유지하는 습관이다. - 7페이지

나쁜 코드는 너무 많은 일을 하려 애쓰다가 의도가 뒤섞이고 목적이 흐려진다. 깨끗한 코드는 한 가지에 ‘집중’한다. 각 함수의 클래스와 모듈은 주변 상황에 현혹되거나 오염되지 않은 채 한길만 걷는다. - 10페이지

깨끗한 코드는 단순하고 직접적이다. 깨끗한 코드는 잘 쓴 문장처럼 읽힌다. - 10페이지

깨끗한 코드는 작성자가 아닌 사람도 읽기 쉽고 고치기 쉽다. - 11페이지

데이브는 ‘최소’라는 단어를 두 번이나 사용했다. 명백히 그가 큰 코드보다 작은 코드에 가치를 둔다는 의미다. 이는 우리 분야가 탄생한 이래로 소프트웨어 문헌에서 계속 반복하는 교훈이기도 한다. 작을수록 좋다. - 12페이지

짤막한 문단 몇 개로 론은 이 책 내용을 요약했다. 중복을 피하라, 한 기능만 수행하라. 제대로 표현하라. 작게 추상화하라. - 14페이지

코드를 읽는 시간 대 코드를 짜는 시간 비율이 10대 1을 훌쩍 넘는다. 새 코드를 짜면서 우리는 끊임없이 기존 코드를 읽는다.

비율이 이렇게 높으므로 읽기 쉬운 코드가 매우 중요하다. 비록 읽기 쉬운 코드를 짜기가 쉽지는 않더라도 말이다. 하지만 기존 코드를 읽어야 새 코드를 짜므로 읽기 쉽게 만들면 사실은 짜기도 쉬워진다.

이 논리에서 빠져나갈 방법은 없다. 주변 코드를 읽지 않으면 새 코드를 짜지 못한다. 주변 코드가 읽기 쉬우면 새 코드를 짜기도 쉽다. 주변 코드를 읽기가 어려우면 새 코드를 짜기도 어렵다. 그러므로 급하다면, 서둘러 끝내려면, 쉽게 짜려면, 읽기 쉽게 만들면 된다. - 18페이지

미국 보이스카우트 규칙

캠프장은 처음 왔을 때보다 더 깨끗하게 해놓고 떠나라.

체크아웃할 때보다 좀 더 깨끗한 코드를 체크인한다면 코드는 절대 나빠지지 않는다. 한꺼번에 많은 시간과 노력을 투자해 코드를 정리할 필요가 없다. 변수 이름 하나를 개선하고, 조금 긴 함수 하나를 분할하고, 약간의 중복을 제거하고, 복잡한 if문 하나를 정리하면 충분하다.

시간이 지날수록 코드가 좋아지는 프로젝트에서 작업한다고 상상해보라! 전문가라면 너무도 당연하지 않은가? 지속적인 개선이야말로 전문가 정신의 본질이 아니던가? -19페이지

오늘 읽은 소감은? 떠오르는 생각

이제 취업한지 얼마 안된 신입 개발자로 일하면서 항상 의구심을 가졌던 것이 ‘내 코드가 과연 괜찮은가?’였다. 이 책에서 나오는 기능대로 굴러는 가지만 쓰레기인 코드는 아닌지 항상 의문이었다. 누군가에게 물어볼수도 없는 상황에서 내 코드를 더 깨끗한 코드로 만들어가기 위해서 했던 고민들이 이 책에 나와있는 것 같다. 깨끗한 코드를 짜고 싶지만 깨끗한 코드에 대한 지식과 경험이 부족한 나에게 딱 필요한 책이라는 느낌이 들어서 니꼴라스 쌤이 하는 챌린지에 바로 도전하기로 했다.

평가일이 정해져있었기에 빠르게 짜고 동작하는 것만 보여주고 덮어두었던 2달 지난 코드를 얼마 전에 뜯어고쳤다. 2달 동안 전자정부 스프링프레임워크를 경험하면서 조금 쌓인 MVC패턴에 대한 이해가 내가 얼마나 구조 없이 프로그래밍을 했는지 이해가 되는 순간이었다. 이 책에서 말하는 그 쓰레기 코드가 내 코드이지 않았을까...

이 책을 읽으면서 나 말고도 누군가가 이 코드를 보았을 때, 유지보수하기 쉽도록 이해가능한 코드를 짜야한다는 것을 더 느낄 수 있었다. 단순함, 중복을 피하는 것, 디테일에 신경쓰며, 지속적으로 코드를 개선해나가야 함을 알게 되었다. 계속 ‘정리’라는 단어가 머릿 속에 박힌 것 같다. 사소한 것 처럼 보이는 이 정리가 결국에는 내 코드가 깨끗한 코드가 되어 생산성을 높여주는 토대가 된다는 것을 기억하며 기술부채가 쌓이지 않는 코드를 작성해나가야겠다.

 

궁금한 내용이 있거나, 잘 이해되지 않는 내용이 있다면 적어보세요.

#노마드코더 #북클럽 #노개북

반응형

댓글