개발자 99% 커뮤니티에서 수다 떨어요!
TIL (Today I Learned)
22.02.25
// 2022.01.22
오늘 읽은 범위
4장. 주석
// 1장. 깨끗한 코드
책에서 기억하고 싶은 내용을 써보세요.
p68 사실상 주석은 기껏해야 필요악이다. 프로그래밍 언어 자체가 표현이 풍부하다면 아니 우리에게 프로그래밍 언어를 치밀하게 사용해. 의도를 표현할 능력이 있다면 주석은 거의 필요하지 않으리라.
우리는 코드로 의도를 표현하지 못해, 그러니까 실패를 만회하기 위해 주석을 사용한다.
p68 내가 이렇듯 주석을 무시하는 이유가 무엇이냐고?
거짓말을 하니까. 주석은 오래될수록 코드에서 멀어진다.
이유는 단순하다. 프로그래머들이 주석을 유지하고 보수하기란 현실적으로 불가능하니까.
p69 진실은 한곳에만 존재한다.
바로 코드다. 코드만이 자기가 하는 일을 진실되게 말한다. 코드만이 정확한 정보를 제공하는 유일한 출처이다.
p69 주석은 나쁜 코드를 보완하지 못한다.
코드에 주석을 추가하는 일반적인 이유는 코드 품질이 나쁘기 때문이다.
표현력이 풍부하고 깔끔하며 주석이 거의 없는 코드가 복잡하고 어수선하며 주석이 많이 달린 코드보다 훨씬 좋다.
p70 코드로 의도를 표현하라
몇 초만 더 생각하면 코드로 대다수 의도를 표현할 수 있다. 많은 경우 주석으로 달려는 설명을 함수로 만들어 표현해도 충분하다.
p84 함수나 변수로 표현할 수 있다면 주석을 달지마라
p86 주석으로 처리한 코드
주석으로 처리한 코드만큼 밉상스러운 관행도 드물다.
주석으로 처리된 코드는 다른 사람들이 지우기를 주저한다. 이유가 있어 남겨 놓았으리라고, 중요하니까 지우면 안 된다고 생각한다.
그래서 질 나쁜 와인병 바닥에 앙금이 쌓이듯 쓸모 없는 코드가 점차 쌓여간다.
p87 1960년대 즈음에는 주석으로 처리한 코드가 유용했었다. 하지만 우리는 오래 전 부터 우수한 소스 코드 관리 시스템을 사용해왔다.
소스 코드 관리 시스템이 우리를 대신해 코드를 기억해준다.
오늘 읽은 소감은? 떠오르는 생각을 가볍게 적어보세요
오늘은 4장 주석에 대해 좋은 주석과 나쁜 주석 그리고 주석이 코드에 끼치는 영향까지 배울 수 있었다. 우선 내가 가지고 있던 주석에 관한 시각은 첫 문단에서 부터 산산조각 났다. 나는 코드를 이해하는 데 조금이라도 도움이 된다면 주석을 쓰는 게 좋다고 생각하는 쪽이었고 주석을 애용해왔던 것 같다.
하지만 저자는 주석이 필요악이며 코드 자체로 의도를 충분히 표현할 능력이 있다면 주석은 거의 필요하지 않다 라고 주장한다. 그가 주석을 무시하는 이유로는 주석을 유지 보수 하기는 현실적으로 불가능하기 때문이라고 말한다. 코드는 변화 무쌍하게 지속적으로 변화한다. 하지만 그에 딸린 주석이 지속적으로 대응할 수는 없기 때문에 유일한 진실은 코드에 있다고 말한다.
그의 주장과 논거를 수긍할 수밖에 없었다. 그는 몇 초만 더 생각하면 코드로 대다수 의도를 표현할 수 있다고 말한다. 이 부분에서 특히 팩트 폭행으로 심장이 몇 초 멎은 것 같다. 지난 날의 내 과오가 주마등 처럼 스쳐 지나갔기 때문이다.
나는 내 코드를 더 정교하게 설계하고 리팩터링 할 생각은 하지 않고 더 쉬운 길로 그 의도를 설명하려고 했던 것 같다. 그게 동료 개발자의 이해에 도움이 된다는 착각으로 말이다. 얼마나 잘못된 생각 이였는지 깨닫는 순간이었다.
또한 언젠간 쓰이겠지 하며 주석으로 처리한 수 많은 코드들이 눈에 밟혔다. 그 중 실제로 다시 쓰인 코드는 다시 생각해봐도 5%도 안될 것이며 그 마져도 훌륭한 버전관리 시스템 및 툴로 바로 이전 history를 찾아볼 수 있기 때문에 전혀 쓸 이유가 없던 주석이었다.
3장 부터 예제 코드 양이 늘어나면서 코드를 이해하는 속도 및 양이 줄어들어 이렇게 계속 읽는 것이 맞는 가 라는 잠깐의 의구심이 들었었다. 하지만 오늘까지 챌린지를 진행하며 든 생각은 코드들 다 이해하지 못하더라도 이 책을 읽는 가치는 충분하다라는 확신이 오늘로서 더 드는 순간이다.
이 책은 단순히 개발을 더 잘하기 위한 스킬을 제공하는 것이 아닌 좋은 코드란 무엇인가에 대해 주석과 같이 한번 더 고민해보지 않은 부분까지도 생각해보게 한다. 그렇기 때문에 바쁜 시간을 쪼개 이 책을 읽는 것과 챌린지 참여 하기를 잘했다 라는 생각이 드는 밤이다.
궁금한 내용이 있거나, 잘 이해되지 않는 내용이 있다면 적어보세요.
// 르블랑의 법칙? (LeBlanc's Law states) - "Later equals never" is used in the context of software development, but may be applied more broadly to other areas. The law is attributed to Dave LeBlanc.