Today I Learn

[TIL] "클린코드" 6일차

diligentCat 2024. 6. 30. 02:50

DAY 6

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

 

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

  • 프로그래머라면 형식을 깜끔하게 맞춰 코드를 짜야 한다. 코드 형식을 맞추기 위한 간단한 규칙을 정하고 그 규칙을 착실히 따라야 한다. 팀으로 일한다면 팀이 합의해 정하고 모두가 그 규칙을 따라야 한다. (p.96)
  • 코드의 형식은 중요하다. 너무 중요해서 무시하기 어렵다. 너무나도 중요하므로 융통성 없이 맹목적으로 따르면 안된다. 의사소통은 전문 개발자의 일차적인 의무다. (p.96)
  • 오랜 시간이 지나 원래 코드의 흔적을 더 이상 찾아보기 어려울 정도로 코드가 바뀌어도 맨 처음 잡아놓은 구현 스타일과 가독성 수준은 유지보수 용이성과 확장성에 계속 영향을 미친다. (p.96)
  • 일반적으로 큰 파일보다 작은 파일이 이해하기 쉽다. (p.97)
  • 소스 파일도 신문 기사와 비슷하게 작성한다. 이름은 간단하면서도 설명이 가능하게 짓는다. 이름만 보고도 올바른 모율을 살펴보고 있는지 아닌지를 판단할 정도로 신경 써서 짓는다. 소스 파일 첫 부분은 고차원 개념과 알고리즘을 설명한다. 아래로 내려갈수록 의도를 세세하게 묘사한다. 마지막에는 가장 저차원 함수와 세부 내역이 나온다. (p.98)
  • 개념은 빈 행으로 분리하라. 거의 모든 코드는 왼쪽에서 오른쪽으로 그리고 위에서 아래로 읽힌다. 각 행은 수직이나 절을 나타내고, 일련의 행 묶음은 완결된 생각 하나를 표현한다. 생각 사이에는 빈 행을 넣어 분리해야 마땅하다. (p.98)
  • 줄바꿈이 개념을 분리한다면 세로 밀집도는 연관성을 의미한다. 서로 밀접한 코드 행은 세로로 가까이 놓여야 한다는 뜻이다.  (p100)
  • 서로 밀접한 개념은 세로로 가까이 둬야한다. 타당한 근거가 없다면 서로 밀접한 개념은 한 파일에 속해야 마땅하다. 이게 바로 protected 변수를 피해야 하는 이유 중 하나다. (p.101)
  • 연관성이란 한 개념을 이해하는 데 다른 개념이 중요한 정도다. 연관성 깊은 두 개념이 멀리 떨어져 있으면 코드를 읽는 사람이 소스 파일과 클래스를 여기 저기 뒤지게 된다. (p.101)
  • 변수를 사용하는 위치에 최대한 가까이 선언한다. 우리가 만든 함수는 매우 짧으므로 지역 변수는 각 함수 맨 처음에 선언한다. (p.101)
  • 인스턴스 변수는 클래스 맨 처음에 선언한다. 변수 간에 세로로 거리를 두지 않는다. 잘 설계한 클래스는 많은 (혹은 대다수) 클래스 메서드가 인스턴스 변수를 사용하기 때문이다. (p.103)
  • 종속함수. 한 함수가 다른 함수를 호출한다면 두 함수는 세로로 가까이 배치한다. 가능하다면 호출하는 함수를 호출되는 함수보다 먼저 배치한다. 규칙을 일관적으로 적용한다면 독자는 방금 호출한 함수가 잠시 후에 정의되리라는 사실을 예측한다. (p.104)
  • 어떤 코드는 서로 끌어당긴다. 개념적인 친화도가 높기 때문이다. 친화도가 높을수록 코드를 가까이 배치한다. (p.106)
  • 호출되는 함수를 호출하는 함수보다 나중에 배치한다. 그러면 소스 코드 모듈이 고차원에서 저차원으로 자연스럽게 내려간다. 신문 기사와 마찬가지로 가장 중요한 개념을 가장 먼저 표현한다. 가장 중요한 개념을 표현할 때에는 세세한 사항을 최대한 배제한다. 세세한 사항은 가장 마지막에 표현한다. (p.106)
  • 프로그래머는 명백하게 짧은 행을 선호한다.(p.107)
  • 가로로는 공백을 사용해 밀접한 개념과 느슨한 개념을 표현한다. (p.108)
  • 정렬이 필요할 정도로 목록이 길다면 문제는 목록 길이지 정렬 부족이 아니다. (p.110)
  • 클래스 정의처럼 파일 수준인 문장은 들여쓰지 않는다. 클래스 내 메서드는 클래스보다 한 수준 들여쓴다. 메서드 코드는 메서드 선언보다 한 수준 들여쓴다. 블록 코드는 블록을 포함하는 코드보다 한 수준 들여쓴다. (p.111)
  • 내가 선호하는 규칙은 아니지만 팀이 정한 규칙이었다. 팀원으로서 나는 팀 규칙에 따라 FitNesse 코드를 구현했다. (p.114)
  • 한 소스 파일에서 봤던 형식이 다른 소스파일에도 쓰이리라는 신뢰감을 독자에게 줘야한다. 온갖 스타일을 뒤섞어 소스코드를 필요 이상으로 복잡하게 만드는 실수는 반드시 피한다. (p.114)

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

  • 일관성! 일관성! 일관성! 항상 일관성있게 코드를 작성해야 좋다. 중요한 부분은 덜어낼 만큼 덜어내 핵심만 추려 가장 앞으로 둔다. 내가 만든 코드는 항상 일관성 있게 개념을 설명해야 하고 읽혀야 한다. 작은 파일과 작은 행 길이로도 충분히 중요하고 방대한 작업을 해낼 수 있다!

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

  • protected 변수란 무엇일까?
  • 윤곽도(Outline)란 무엇인가?
접근 제어자(access modifier)를 사용하여 변수나 메서드의 사용 권한을 설정할 수 있다. 다음과 같은 접근 제어자를 사용하여 사용 권한을 설정할 수 있다. 접근 제어자는 private < default < protected < public 순으로 보다 많은 접근을 허용한다. 접근 제어자가 protected로 설정되었다면 protected가 붙은 변수나 메서드는 동일 패키지의 클래스 또는 해당 클래스를 상속받은 클래스에서만 접근이 가능하다.

 

오늘 읽은 다른 사람의 TIL

 

lactofreee님의 글 : https://nomadcoders.co/community/thread/9982

 

[클린 코드] TIL 5장. 형식 맞추기 – 노마드 코더 Nomad Coders

Post on 노마드 코더 Community

nomadcoders.co

김혁준님의 글 : https://velog.io/@rlagurwns112/cleancode-day9

 

클린코드 Day 9 - 형식 맞추기

velog.io

 

'Today I Learn' 카테고리의 다른 글

[TIL] "클린코드" 8일차  (1) 2024.07.03
[TIL] "클린코드" 7일차  (1) 2024.07.01
[TIL] "클린코드" 5일차  (0) 2024.06.28
[TIL] "클린코드" 4일차  (0) 2024.06.25
[TIL] "클린코드" 3일차  (0) 2024.06.24