읽기 좋은 코드가 좋은 코드다
읽기 좋은 코드가 좋은 코드다.
더 나은 코드를 작성하는 간단하고 실전적인 테크닉 더스틴 보즈웰, 트레버 파우커 지음 임백준 옮김
코드는 이해하기 쉬워야 한다.
- 코드는 간결하게 작성하는것도 중요하지만 가독성이 좋아야한다.
- 누가, 언제 다시 읽던지 간에 이해하기 쉬워야 한다.
표면적 수준에서의 개선이 필요하다.
표면적 수준이란?
- 좋은 이름을 짓고, 좋은 설명을 달고, 코드를 보기 좋게 정렬하는 따위
이름에 정보를 담아내라
특정한 단어 고르기
- 매우 구체적인 단어를 선택하여 무의미한 단어를 피하는 것이다.
- getPage() –> fetchPage(),DownloadPage()
- size() –> width(), height()
- stop() – > kill()
화려한 단어 고르기
- 상황에 더 적합한 화려한 단어를 선택하라
send –> deliver, dispatch, annonuce, route start –> launch, create, begin, open
temp 변수명
- temp 는 그야말로 임시 저장소외에 다른 용도가 없는 경우에만 사용하도록 한다.
추상적인 이름보다 구체적인 이름을 선호하자.
추가적인 정보를 이름에 추가하기
- 단위를 포함하는 경우 시간은 ms, sec, hour 용량은 mb, gb 와 같은 단위를 포함하여 이름을 짓는다.
- 다른 중요한 속성 포함하기 예) password
- plainPassword (암호화 되지 않은 암호 문자열)
- encyptPassword (암호화된 문자열)
구체적으로 적는 것도 좋지만 너무 길면 좋지 않다.
- 지역적으로 사용되는 변수에는 짧은 이름을 사용한다.
- 긴 이름입력은 자동완성 기능을 이용하면 오타를 줄일 수 있다.
- 약어와 축약형은 매우 보편적인 의미의 축양형이 아니라면 사용하지 말것 ex) String -> str 와 같이 보편적인 축약형은 사용해도 된다.
오해 할 수 없는 이름들을 선택하자.
- 예시) filter()
- filter 조건의 내용을 선택한다는 건지 제거 한다는지 의미가 모호하다.
- 대상을 고르는 기능이라면 select()로 이름을 짓는다.
- 대상을 제거하는 기능이라면 exclude()로 이름을 짓는다.
경계값 변수명
- 경계를 포함하는 한계값을 다룰 때는 min, max 와 같은 변수명을 짓는다.
- 경계를 포함하는 범위에는 first, last 와 같은 변수명을 짓는다.
- 경계를 포함하고/배제하는 범위에는 begin, end 와 같은 변수명을 짓는다.
불리언 변수 이름 짓기
- 의마가 명확하지 않게 짓기
- 부정하는 용어는 피하는 것 (부정시 한번 더 부정해서 생각해야 되기 때문에 헷갈림)
get으로 시작하는 메소드 주의
- getXX() 프로퍼티 getter로 생각 할 수 있으니 유의 할것.
미학적코드 만들기!
- 같은 반복적인, 규칙적인 코드 스타일이 있다면 줄과 위치를 규칙적으로 하여 코드를 읽기 쉽게 하자 .
- 줄이 너무 길고 반복적인 작업이라면 헬퍼 메소르를 만들어서 사용하자. 헬퍼메소드는 그냥 같은 작업을 하는 템플릿형 메소드 인듯?
- 프로퍼티, 메소드 선언 코드들은 관련 잇는 것끼리 그룹으로 묶어서 정리
- 일관성이 있는 코드를 작성 (올바른 스타일보바도 일관성 유지가 중요)
적절한 주석달기
- 필요없는 주석: 뻔한 주석 (생성자, 설정, 값 세팅 이런것들 )
- 코드 내용과 똑같은 내용의 주석은 필요없음. (주요한 세부사항을 적는 편이 낫다)
- 적어야할 주석: 소스코드에서 의심적은 부분이나 생각을 적어두면 나중에 다른 사람이 볼때 수정해도 되는 메소드임을 알릴 수 있다.
- 코드의 결함을 설명하자.
- ex : //TODO: 더 빠른 알고리즘 을 적용해야한다.
# 상수에 대한 설명달기 - 특정한 값으로 상수값을 정했다면 왜 이렇게 정했는지 이유를 주석에 설명한다.