클린코드 챌린지 #5

dev_suyeon·2022년 2월 28일
0

CleanCode

목록 보기
6/11

오늘 읽은 범위

5장. 형식 맞추기

책에서 기억하고 싶은 내용

  • 형식을 맞추는 목적
    코드 형식은 의사소통의 일환으로 처음 잡아놓은 구현 스타일과 가독성 수ㄴ은 유지보수 용이성과 확장성에 영향을 미친다.
  1. 적절한 행 길이를 유지하라
    JUnit, Time and Money 등 유명한 프로젝트들은 500줄이 넘지 않고 200줄 정도인 파일로 커다란 시스템을 구축 할 수 있다는 것을 보여준다.
  • 신문 기사처럼 작성하라
    이름은 간단하면서도 설명이 가능하게 짓기
    소스 파일 첫 부분은 고차원 개념과 알고리즘을 설명하기
    아래로 내려갈 수록 의도를 세세하게 묘사하기
    마지막 가장 저차원 함수와 세부 내역 작성하기
  • 개념은 빈 행으로 분리하라
    패키지 선언부, import 문, 각 함수 사이에 빈행 넣기
    빈행의 의미 : 새로운 개념을 시작한다는 시각적 단서
  • 세로 밀집도
    서로 밀접한 코드행은 세로로 가까이 놓기
    예) 두 인스턴스 변수 중간에 줄바꿈 -> 두 인스턴스 변수 붙히기
  • 수직 거리
    서로 밀접한 개념은 세로로 가까이 두기, 한 파일에 두기
    (단, 두 개념이 서로 다른 파일에 속한다면 규칙 X)
    • 변수선언 : 변수는 사용하는 위치에 최대한 가까이 선언
    • 인스턴스 변수 : 인스턴스 변수는 클래스 맨 처음에 선언
    • 종속 함수 : 한 함수가 다른 함수를 호출한다면 두 함수는 세로로 가까이 배치하기, 가능하다면 호출하는 함수를 호출되는 함수보다 먼저 배치(자연스레 코드가 읽히도록)
    • 개념 유사성 : 친화도가 높을수록 코드를 가까이 배치하기
      예) 한 함수가 다른 함수를 호출해 생기는 직접적인 종송성, 변수와 그 변수를 사용하는 함수, 비슷한 동작을 수행하는 함수, 명명법이 똑같거나 기본 기능이 유사한 함수
    • 세로 순서 : 호출되는 함수를 호출하는 함수보다 나중에 배치(소스 코드 모듈 고->저차원)
  1. 가로 형식 맞추기
    짧은 행은 행이 바람직하며 100~120자가 적당
  • 가로 공백과 밀집도
    공백을 사용하여 밀접한 개념과 느슨한 개념 표현
    예) 할당 연산자를 강조하려고 앞뒤에 공백을 주어 두가지 요소가 나뉜다는 것을 표현
    함수 이름과 이어지는 괄호 사이에는 공백을 넣지 않음 함수와 인자는 밀접하기 때문
    수식에서 항과 항 사이에 공백을 넣어 곱셉과 덧셈, 뺄셈의 우선순위를 표현(도구 사용시 수식은 적용이 안되고 공백이 제거됨)
  • 가로 정렬
    불필요하게 아래와 같이 정렬하지 않기
    private Socket		    socket;
     private InputStream 	input;
    클래스명이 길어진다면 선언부와 할당부를 나누기
    public FitNesseExpediter(Soket s, FinNesseContext context) throws Exception
    {
     return true;
    }
  • 들여쓰기
    범위로 이뤄진 계층을 표현하기 위해 우리는 코드를 들여쓰기함
    들여쓰기의 정도는 계층에서 코드가 자리잡은 수준에 비례
  • 가짜범위
    빈 while 문이나 for문 최대한 사용하지 않기
    아래 예제처럼 새행에 ;를 사용하지 않기
    while ( dis.read(buf, 0, readBufferSize) != -1)
    ;
  • 팀 규칙
    팀은 한 가지 규칙에 합의해야 함. 모든 팀원은 그 규칙을 따라야 함.
    스타일은 일관적이고 매끄러워야함.
    목표! 일관적인 스타일의 소프트웨어 구현하기
    예시) 어디에 괄호를 넣을지, 들여쓰기는 몇자로 할지, 클래스와 변수와 메서드 이름은 어떻게 지을지 등 결정
  1. 밥 아저씨의 형식 규칙
    책 P.114~P.116 참고

오늘 읽은 소감

이번 챕터에서는 신문 기사처럼 작성하라는 부분이 인상깊었다.
아주 좋은 기사처럼 읽고 싶은 마음이 들게끔 구조적으로 코드를 작성하라는 것이다.
내 코드라고 하더라도 중구난방 정돈되지 않은 코드 구조로 짜서 유지보수할 때 힘겨웠던 것 같다.
세로 길이와 가로 길이에 대한 유명한 프로젝트를 기반으로 하여 조사한 그래프도 인상깊었다.
유명한 프로젝트가 무조건 세로 길이가 짧고 가로 길이가 정해져 있는 것은 아니지만 대부분 세로 길이가 짧고(제공 시스템에 비해) 가로 길이가 2~60자인 행이 많다는 것이 신기했다.
현재 진행 중인 프로젝트에서 팀원과 협의하지 않고 각자 맡은 서비스를 구현 중인데 지금이라도 이번 챕터에서 배운 내용을 공유하고 리팩토링하면서 개발을 진행해야겠다.

profile
Back-End Developer

0개의 댓글