개발자 99% 커뮤니티에서 수다 떨어요!
TIL (Today I Learned)
// 2022.02.28
오늘 읽은 범위
// 5장. 형식 맞추기
책에서 기억하고 싶은 내용을 써보세요.
오늘 구현한 기능이 다음 버전에서 바뀔 확률은 아주 높다. 그런데 오늘 구현한 코드의 가독성은 앞으로 바뀔 코드의 품질에 지대한 영향을 미친다. 오랜 시간이 지나 원래 코드의 흔적을 더 이상 찾아보기 어려울 정도로 코드가 바뀌어도 맨 처음 잡아놓은 구현 스타일과 가독성 수준은 유지보수 용이성과 확장성에 계속 영향을 미친다. - 96p
일반적으로 함수 호출 종속성은 아래 방향으로 유지한다. 다시 말해, 호출되는 함수를 호출하는 함수보다 나중에 배치한다. 그러면 소스 코드 모듈이 고차원에서 저차원으로 자연스럽게 내려간다.
신문 기사와 마찬가지로 가장 중요한 개념을 가장 먼저 표현한다. 가장 중요한 개념을 표현할 때는 세세한 사항을 최대한 배제한다. 세세한 사항은 가장 마지막에 표현한다. - 107p
가로로는 공백을 사용해 밀접한 개념과 느슨한 개념을 표현한다. - 108p
팀은 한 가지 규칙에 합의해야 한다. 그리고 모든 팀원은 그 규칙을 따라야 한다. 그래야 소프트웨어가 일관적인 스타일을 보인다. -113p
오늘 읽은 소감은? 떠오르는 생각을 가볍게 적어보세요
파일 길이가 짧도록, 그리고 행 길이가 짧도록 코드를 짜는 것의 중요성을 강조하기 위해 실제 프로젝트를 여러 개 들고 와서 실제 수치를 가지고 이야기하는 것이 많이 와 닿았던 것 같다. 역시, 데이터의 힘은 무시할 수 없다.
이번 챕터를 읽을 때도 코드를 작성하는 것을 글쓰는 것에 비유한 것이 마음에 들었다. 함수의 종속성을 아래로 유지하라는 것, 즉, 호출하는 함수를 호출되는 함수 앞에 배치하라는 것을 강조하기 위해 저자는 신문을 예시로 들었다. 하지만, 비단 신문뿐만 아니라 어떤 글이든, 목차, 제목같은 포괄적인 내용으로 시작해 세부적인 내용으로 프레임을 점차 옮겨간다. 코드도 쓰는 사람, 읽는 사람이 모두 존재하는 글의 일종이기 때문에 일맥상통하는 이야기인 것 같다.
다만, 자바 이외에 다른 언어에서는 변수 선언이나 함수 종속성에 관한 이야기가 통하지 않는 부분이 있고, 학교에서 과제를 할 때도 c, python, java 등 어떤 언어를 쓰는가에 따라 지켜야할 규칙이 달랐던 것이 나를 힘들게 했던 기억이 있는데, 이와 같이 형식에 관한 규칙은 어떤 언어를 사용하는가에 따라 다르게 적용하는 것도 중요한 것 같다. 중요한 것은, 코드의 형식을 유지하고, 이를 통해 높은 가독성을 유지하는 것 아니겠는가. 저자의 말처럼, 코드의 기능은 달라질 수 있지만, 코드의 형식과 가독성은 쉽게 변하지 않는다. 한 번 구축한 스타일이 결국 코드의 향후 스타일도 결정할 것이며, 그렇기 때문에 당장 기능을 구현하는 것만이 아니라, 코드를 계속 읽기 쉽도록 작성하는 것이 중요하다는 의견에 동의하지 않을 수 없다. 책의 서두에서 이야기된 바와 같이, 코드는 처음 작성하는 것보다 유지보수가 더 많은 시간을 소모하게끔 하기 때문이다.
세로 축의 배치 순서, 공백을 통해 관계를 표현하는 것, 가로 축의 들여쓰기의 중요성은 고개를 끄덕거리며 당연하게 넘어갔지만, 가로의 공백을 통해 밀접한 개념과 느슨한 개념을 표시한다는 부분은 머리를 한 대 맞은 듯한 기분이 들게끔 했다. 내게는 이 부분이 공백과 순서같은 작지만 사소하지 않은 디테일이 코드의 가독성과 sematic에 얼마나 큰 영향을 미치는지 알 수 있게 해준 대목이었다.
결국, 계속되는 반복되는 이야기지만, 프로그래밍은 팀스포츠다. 개인의 성향도 물론 중요하지만, 팀단위의 작업은 팀의 규칙이 우선시 되어야 한다. 프로젝트를 할 때 아웃라인을 짜고, 프로그램이 어떤 기능을 구현해야할지에 관해 토의하는 등에 많은 시간을 쏟듯이, 코드 작성의 형식을 정하는 데에도 많은 시간을 쏟아야겠다는 생각이 들었다.
궁금한 내용이 있거나, 잘 이해되지 않는 내용이 있다면 적어보세요.