프로그래밍

[TIL] 클린코드(Clean Code) - 5장. 형식 맞추기

2022. 2. 28. 15:32
반응형

📆 TIL (Today I Learned) 날짜

2022.02.28

📚 오늘 읽은 범위

5장. 형식 맞추기

📝 책에서 기억하고 싶은 내용

  • 형식을 맞추는 목적 : 오랜 시간이 지나 원래 코드의 흔적을 더 이상 찾아보기 어려울 정도로 코드가 바뀌어도 맨 처음 잡아놓은 구현 스타일과 가독성 수준은 유지보수 용이성과 확장성에 계속 영향을 미친다. 원래 코드는 사라질지라도 개발자의 스타일과 규율은 사라지지 않는다. (p.96)
  • 적절한 행 길이를 유지하라 : 500줄을 넘지 않고 대부분 200줄 정도인 파일로도 커다란 시스템을 구축할 수 있다는 사실이다. (FitNesses는 50,000줄에 육박하는 시스템이다.) 반드시 지킬 엄격한 규칙은 아니지만 바람직한 규칙으로 삼으면 좋겠다. 일반적으로 큰 파일보다 작은 파일이 이해하기 쉽다. (p.97)
  • 신문 기사처럼 작성하라 : 소스 파일 첫 부분은 고차원 개념과 알고리즘을 설명한다. 아래로 내려갈수록 의도를 세세하게 묘사한다. 마지막에는 가장 저차원 함수와 세부 내역이 나온다. (p.98)
  • 수직 거리 : 서로 밀접한 개념은 세로로 가까이 둬야 한다. 물론 두 개념이 서로 다른 파일에 속한다면 규칙이 통하지 않는다. 하지만 타당한 근거가 없다면 서로 밀접한 개념은 한 파일에 속해야 마땅하다. 이게 바로 protected 변수를 피해야 하는 이유 중 하나다. 같은 파일에 속할 정도로 밀접한, 두 개념은 세로 거리로 연관성을 표현한다. 여기서 연관성이란 한 개념을 이해하는 데 다른 개념이 중요한 정도다. 연관성이 깊은 두 개념이 멀리 떨어져 있으면 코드를 읽는 사람이 소스 파일과 클래스를 여기저기 뒤지게 된다. (p.101)
  • 종속 함수 : 한 함수가 다른 함수를 호출한다면 두 함수는 세로로 가까이 배치한다. 또한 가능하다면 호출하는 함수를 호출되는 함수보다 먼저 배치한다. 그러면 프로그램이 자연스럽게 읽힌다. 규칙을 일관적으로 적용한다면 독자는 방금 호출한 함수가 잠시 후에 정의되리라는 사실을 예측한다. (p.104)
  • 세로 순서 : 신문 기사와 마찬가지로 가장 중요한 개념을 가장 먼저 표현한다. 가장 중요한 개념을 표현할 때는 세세한 사항을 최대한 배제한다. 세세한 사항은 가장 마지막에 표현한다. 그러면 독자가 소스 파일에서 첫 함수 몇 개만 읽어도 개념을 파악하기 쉬워진다. 세세한 사항까지 파고들 필요가 없다. (p.107)
  • 팀 규칙 : 팀은 한 가지 규칙에 합의해야 한다. 그리고 모든 팀원은 그 규칙을 따라야 한다. 그래야 소프트웨어가 일관적인 스타일을 보인다. 개개인이 따로국밥처럼 맘대로 짜대는 코드는 피해야 한다. (p.113)

😀 오늘 읽은 소감 및 떠오르는 생각

  • 형식 맞추기 부분의 내용들은 대부분 내가 계속 사용해오던 형식이었어서 나름 만족스러웠다.
  • 빈행의 경우 조금 기준이 애매한 부분이 있었는데 이번에 기준이 확실해졌다. 계속 이 기준을 고수해 나가야겠다.
  • 수직 거리 부분은 공감이 많이 됐다. 전에 어떤 소스 코드를 읽으며 따라가던 일이 있었는데 계속 여기 호출하고 저기 호출하면서 왔다갔다 하다 보니까 나중엔 어딜 보고 있었는지 길을 잃는 경우가 있었다. 내가 소스 코드 읽는 능력이 많이 떨어져서 그런가 했었는데 수직 거리와 종속 함수, 세로 순서 부분을 읽어보니까 꼭 그런 것만은 아니었겠다 생각했다. 내가 코드 작성을 하는 경우에는 그렇게 여기저기 점프하면서 길을 잃게 만드는 일은 없게 해야지.
반응형