오늘 TIL 3줄 요약
나쁜 코드는 나쁜 코드를 유혹한다.
새 코드를 짜기 위해선 기존 코드를 끊임없이 읽어야한다.
보이스카우트 규칙
책에서 기억하고 싶은 내용
회사가 망한 원인은 바로 나쁜 코드 탓이었다. (p.4)
나쁜 코드는 나쁜 코드를 불러온다.
제대로 짤 시간이 부족하거나, 지겨워서 빨리 끝내려거나와 같은 이유로 대충 짠 프로그램이 돌아간다는 사실로 안도감을 느껴버린다.
안 돌아가는 프로그램보다 돌아가는 쓰레기가 낫다고 생각해서 스스로를 위안하고 나중에 손봐야 겠다고 생각하지만 나중은 결코 오지 않는다.
이런 위안으로 쌓인 코드는 결국 나쁜 코드를 더욱 많이 양산한다.
간단한 변경을 위해 쓰레기 코드를 더 많은 시간을 들여 '해석'하고 코드를 더하지만 엉뚱한 곳에서 또 문제가 생긴다.
결국 생산성이 0에 근접하게 된다.
추상화(p.11, p.14)
나쁜 코드는 너무 많은 일을 하려하다가 의도가 뒤섞이고 목적이 흐려진다.
코드는 추측이 아니라 사실에 기반해서 반드시 필요한 내용만을 담아야한다.
코드는 읽는 사람에게 단호하다는 인상을 줘야한다.
같은 작업을 여러번 반복하는 중복을 피하고, 한 기능만을 수행하며 작게 추상화해라.
짐작했던 기능을 제대로 수행한다면.... (p.15, p.18)
깨끗한 코드는 읽으면서 놀랄 일이 없어야한다.
코드를 독해하느라 머리를 쥐어 짤 필요가 없어야한다.
급하다면, 서둘러 끝내려면 쉽게짜려면, 읽기 쉽게 만들면 된다.
보이스카우트 규칙 (p.18)
캠프장은 처음 왔을 때보다 더 깨끗하게 해놓고 떠나라.
체크아웃 할 때보다 좀 더 깨끗한 코드를 체크인 한다면 코드는 절때 나빠지지 않는다.
한꺼번에 많은 시간과 노력을 투자해 코드를 정리할 필요가 없다.
변수 이름하나를 개선하고, 조금 긴 함수를 분할하는 정도이다.
지속적인 개선을 하자.
소감
난 일단 기능만 돌아가는 쓰레기 코드 작성 전문가이다.
결국 테스트를 통과하지 못하고 다시 짜고 짜고 짜고를 반복했던 경험이있다.
또한 이미 누군가가 만들어놓은 함수가 있었음에도 불구하고 비슷한 작동을 하는 함수를 만들어 시간을 낭비한 적은 몇번이었는지..
고작 1장만을 읽었을 뿐인데도 읽는 내내 발가벗겨진 기분이었다.
반성하는 마음으로 읽게되었다.
코드를 짜면서 고려해할 할 것 (가독성, 중복, 추상화, 테스트 케이스, 오류처리 등)이 이렇게나 많은데 난 속도를 가장 중요하게 생각하고 있었던것 같다.
아니다.
결국 내 코드는 언젠간 개선을 해야하는 것이었으므로 속도면도 탈락이었을 것이다.
나의 나쁜 습관이 이 책을 읽으면서 얼마나 더 드러날지 한편으론 기대되는 마음도 있다.
많이 드러날 수록 난 개선을 많이 해 나갈수 있으니까!!