Community

개발자 99% 커뮤니티에서 수다 떨어요!

← Go back
5장. 형식 맞추기
#clean_code
2년 전
633

오늘 TIL 3줄 요약

  • 코드는 사라질 지라도 코드 형식은 남는다. 그러므로 형식을 맞추는 것이 중요하다.

  • 신문 기사처럼 너무 길지 않고 앞부분만 보더라도 이해가 되고 한 눈에 구조가 파악되도록 작성해야 한다.

  • 팀 규칙으로 시스템 전반적으로 일관된 스타일으로 유지해야 한다.

TIL (Today I Learned) 날짜

2022. 05. 02

오늘 읽은 범위

5장. 형식 맞추기

책에서 기억하고 싶은 내용을 써보세요.

  • 코드 형식은 중요하다!

    • 오늘 구현한 기능은 다음 버전에서 바뀔 확률이 높지만 오늘 구현한 코드의 스타일과 가독성 수준은 앞으로의 코드 품질에 지대한 영향을 미친다.

    • 코드는 사라질지라도 개발자의 스타일과 규율은 사라지지 않는다.

  • 적절한 행 길이를 유지하라.

    • 신문 기사처럼 작성하라.

      • 이름은 간단하면서도 설명이 가능하게

      • 소스 파일 첫 부분은 고차원 개념과 알고리즘을 설명

      • 아래로 내려갈수록 의도를 세세하게 묘사

      • 마지막에 가장 저차원 함수와 세부 내역이 나오도록

    • 개념은 빈 행으로 분리하라.

      • 일련의 행 묶음은 완결된 생각 하나를 표현하며 생각 사이는 빈 행을 넣어 분리해야 한다.

      • 빈 행은 새로운 개념을 시작한다는 시각적인 단서

    • 세로 밀집도는 연관성을 의미. 서로 밀접한 개념은 세로로 가까이 둬야 한다.

      • 변수는 사용하는 위치에 최대한 가까이 선언한다.

      • 인스턴스 변수는 클래스 맨 처음에 선언하고 변수 가에 세로로 거리를 두지 않는다.

        • 잘 설계한 클래스는 많은 클래스 메소드가 인스턴스 변수를 사용하므로 변수 선언을 어디서 찾을지 모두가 알고 있어야 한다.

      • 한 함수가 다른 함수를 호출한다면 두 함수는 세로로 가까이 배치하며 함수 호출 종속성은 아래 방향으로 유지한다. 즉, 호출되는 함수를 호출하는 함수보다 나중에 배치한다.

        • 가장 중요한 개념을 가장 먼저 표현하고 이 때는 세세한 사항을 최대한 배제. 세세한 사항은 가장 마지막에 표현.

      • 개념적인 친화도가 높을수록 코드를 가까이 배치한다.

        • 예를 들어 비슷한 동작을 수행하는 일군의 함수(명명법이 똑같고 기본 기능이 유사한 함수들)

  • 한 행의 길이는 짧은 게 바람직하다.

    • 가로로는 공백을 사용해 밀접한 개념과 느슨한 개념을 표현.

    • 선언문과 할당문을 별도로 가로 정렬하지 않는다.

    • 범위로 이뤄진 계층을 표현하기 위해 들여쓰기를 사용하며, 들여쓰는 정도는 계층에서 코드가 자리잡은 수준에 비례한다.

      • 왼쪽으로 코드를 맞춰 코드가 속하는 범위를 시각적으로 표현하면 구조가 한 눈에 들어온다.

      • 때로 간단한 if문, 짧은 while문 등에서 들여쓰기 규칙을 무시하고 싶은 유혹이 생기지만 가독성을 위해 들여쓰기를 넣는 것이 좋다.

  • 팀은 한 가지 규칙에 합의해야 하며, 모든 팀원은 그 규칙을 따라야 한다. 그래야 소프트웨어가 일관된 스타일을 보인다.

    • 좋은 소프트웨어 시스템은 읽기 쉬운 문서로 이뤄진다. 스타일은 일관적이고 매끄러워야 하며 한 소스 파일에서 봤던 형식이 다른 소스 파일에서도 쓰이리라는 신뢰감을 독자에게 줘야 한다.

오늘 읽은 소감은? 떠오르는 생각을 가볍게 적어보세요

  • 여기서도 결국 코드를 짠다는 것을 독자가 있는 글을 쓰는 일이라는 것을 강조한다.

  • 결국 형식을 맞추는 것이 중요한 이유는 읽는 사람의 가독성을 위해서라는 게 이 장의 요지인 걸로 보인다. 형식을 맞춰야 하는 게 왜 중요한가? 그것이 가독성을 높여주고 독자로 하여금 같은 내용이더라도 좀 더 빠르고 쉽게 이해할 수 있도록 도와주기 때문이다.

  • 그러므로 융통성 없이 맹목적으로 따르면 안되고 독자와 의사소통하기 위한 수단으로 생각해야 한다.

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