[클린 코드] TIL(Today I Learned) DAY 9

soleil_lucy·2024년 2월 3일
0

TIL (2024.02.03)

DAY 9

  • 오늘 읽은 범위: 5장 형식 맞추기

Summary

  • 프로그래머라면 형식을 깔끔하게 맞춰 코드를 짜야 한다
  • 코드 형식은 의사소통의 일환이다
  • 팀으로 일한다면 팀이 합의해 규칙을 정하고 모두가 그 규칙을 따라야 한다

책에서 기억하고 싶은 내용

5장 형식 맞추기

  • 프로그래머라면 형식을 깔끔하게 맞춰 코드를 짜야 한다
  • 코드 형식을 맞추기 위한 간단한 규칙을 정하고 그 규칙을 착실히 따라야 한다
  • 팀이 합의해 규칙을 정하고 모두가 그 규칙을 따라야 한다
  • 필요하다면 규칙을 자동으로 적용하는 도구를 활용한다

형식을 맞추는 목적 (p.96)

  • 코드 형식은 의사소통의 일환이다
  • 형식을 맞추는 목적?
    • 오늘 구현한 기능이 다음 버전에서 바뀔 확률은 아주 높다
      But? 오늘 구현한 코드의 가독성은 앞으로 바뀔 코드의 품질에 지대한 영향을 미친다
    • 맨 처음 잡아놓은구현 스타일과 가독성 수준은 유지보수 용이성과 확장성에 계속 영향을 미친다
    • 원래 코드는 사라질지라도 개발자의 스타일과 규율은 사라지지 않는다

적절한 행 길이를 유지하라 (p.96)

  • 적절한 행 길이를 유지해야 하는 이유?
    • 일반적으로 큰 파일보다 작은 파일이 이해하기 쉽기 때문

신문 기사처럼 작성하라 (p.98)

  • 이름?
    • 간단하면서도 설명이 가능하게 짓는다
  • 소스파일 첫 부분?
    • 고차원 개념과 알고리즘을 설명한다
  • 소스파일 중간 부분?
    • 아래로 내려갈수록 의도를 세세하게 묘사한다
  • 소스파일 마지막?
    • 가장 저차원 함수와 세부 내역

개념은 빈 행으로 분리하라 (p.98)

  • 각 행이 나타내는 것?
    • 수식 or 절
  • 일련의 행 묶음?
    • 완결된 생각 하나를 표현
  • 빈 행의 의미?
    • 생각 사이를 빈 행을 넣어 분리

세로 밀집도 (p.100)

  • 세로 밀집도의 의미?
    • 연관성을 의미함
    • 서로 밀집한 코드 행은 세로로 가까이 놓여야 한다는 뜻

수직 거리 (p.101)

  • 서로 밀접한 개념은 세로로 가까이 둬야 한다
  • 서로 밀접한 개념은 한 파일에 속해야 마땅하다
  • 연관성?
    • 한 개념을 이해하는 데 다른 개념이 중요한 정도

  • 변수 선언?
    • 변수는 사용하는 위치에 최대한 가까이 선언한다
  • 인스턴스 변수
    • 인스턴스 변수는 클래스 맨 처음에 선언한다
  • 종속 함수
    • 한 함수가 다른 함수를 호출한다면 두 함수는 세로로 가까이 배치한다
    • 가능하다면 호출하는 함수를 호출되는 함수보다 먼저 배치한다
  • 개념적 유사성
    • 개념적인 친화도가 높을수록 코드를 가까이 배치한다
    • 종속성의 한 예?
      • 한 함수가 다른 함수를 호출해 생기는 직접적인 종속성
      • 변수와 그 변수를 사용하는 함수
      • 비슷한 동작을 수행하는 일군의 함수

세로 순서 (p.106)

  • 함수 호출 종속성은 아래 방향으로 유지한다
    • 호출되는 함수를 호출하는 함수보다 나중에 배치한다
  • 가장 중요한 개념을 가장 먼저 표현한다
    • 가장 중요한 개념을 표현할 때는 세세한 사항을 최대한 배제한다
    • 세세한 사항은 가장 마지막에 표현한다

가로 형식 맞추기 (p.107)

  • 프로그래머는 명백하게 짧은 행을 선호한다

가로 공백과 밀집도 (p.108)

  • 가로로는 공백을 사용해 밀접한 개념과 느슨한 개념을 표현한다
  • 가로 공백의 의미?
    • 두 가지 주요 요소가 확실히 나뉜다는 사실이 더욱 분명해진다
    • 예?
      • 함수와 인수는 서로 밀접하기 때문에 함수 이름과 이어지는 괄호 사이에는 공백을 넣지 않는다
        function paint(color){
            // ...
        }
      • 연산자 우선순위를 강조하기 위해서도 공백을 사용한다

가로 정렬 (p.109)

  • 가로 정렬을 할 경우?
    • 코드가 엉뚱한 부분을 강조해 진짜 의도가 가려질 수 있다
    • 예?
      • 변수 유형은 무시하고 변수 이름부터 읽게 된다
      • 할당 연산자는 보이지 않고 오른쪽 피연산자에 눈이 간다
  • 가로 정렬을 하지 않으면 오히려 중대한 결함을 찾기 쉽다

들여쓰기 (p.111)

  • 들여쓰기를 사용하는 이유?
    • 범위로 이뤄진 계층을 표현하기 위해 사용
    • 왼쪽으로 코드를 맞춰 코드가 속하는 범위를 시각적으로 표현하기 때문
    • 들여쓰기한 파일은 구조가 한 눈에 들어오기 때문

가짜 범위 (p.113)

  • 빈 while 문이나 for문을 사용하는 것은 피하자

팀 규칙 (p.113)

  • 팀에 속한다면 자신이 선호해야 할 규칙은 바로 팀 규칙이다
  • 팀 규칙을 사용하는 이유?
    • 좋은 소프트웨어 시스템은 읽기 쉬운 문서로 이뤄진다
      • 스타일은 일관적이고 매끄러워야 한다
      • 한 소스 파일에서 봤던 형식이 다른 소스 파일에도 쓰이리라는 신뢰감을 독자에게 줘야 한다

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

  • P.105, 상수를 알아야 마땅한 함수에서 실제로 사용하는 함수로 상수를 넘겨주는 방법이 더 좋다. 라는 문장이 이해가 되지 않습니다...
    • 어떤 상수를 알아야 한다는 것인지?
    • 실제로 사용하는 함수로 상수를 넘겨준다는 방법이 인수에 상수를 넘긴다는 것인지?

오늘 읽은 소감

함수에도 순서가 중요하다는 것이 가장 기억에 남는다. 중구 난방으로 함수를 선언해서 사용한 적이 많기 때문이다. 앞으로 호출되는 함수를 호출하는 함수보다 나중에 배치한다 는 형식을 잊지 말고 사용해야겠다.

profile
여행과 책을 좋아하는 개발자입니다.

0개의 댓글