2장. 개발 시간을 줄여주는 이름 짓기와 주석 쓰기
#
1. 네이밍 컨벤션, 이유를 알고 쓰자#
개발자의 가장 큰 고민은 이름 짓기- 영어로 이름을 지어야 하고, 영어 표기법도 고려해야하고, 다른 개발자가 봤을 때 한번에 무슨 뜻인지, 기능을 하는지 알수있어야하며, 간결해야 합니다.
#
이름 짓기는 창조가 아닌 조합- 대부분의 이름은 조합입니다.
- 다음의 규칙을 준수해야 합니다.
- 자바 네이밍 컨벤션을 철저히 준수합니다.
- 클래스는
UpperCamelCase
- 함수와 변수는
lowerCamelCase
- 상수는
UPPER_DELIMITER_CASE
- 클래스는
- 네이밍은 보통 16글자, 3단어를 조합합니다.
- 클래스 네임: 3.18 단어
- 함수 네임: 3.36 단어
- 변수 네임 : 2.57단어
- 품사는 주로 명사, 동사, 형용사의 조합입니다.
- 명사 + 명사 + 명사
- 동사 + 명사 + 명사
- 형용사 + 명사 + 명사 등
- 자바 네이밍 컨벤션을 철저히 준수합니다.
- 인기 있는 자바 소스의 네이밍 비법은 다른게 아니라 기존 영어 규칙을 지키고 기존 단어를 적절히 조합해서 사용하는 것이 좋습니다.
#
코드의 네이밍 컨벤션은 영어 표기법을 상속받았다.- 네이밍 컨벤션은 기본적으로 영어의 표기법을 상속받습니다.
- 영어 대문자 표기 원칙 몇가지는 다음과 같습니다.
- 고유 명사는 문장 어느 위치에 오든 첫 글자를 대문자로 씁니다.
- 이름 앞에 오는 직함은 첫 글자를 대문자로 씁니다.
- 책, 신문, 잡지, 음악, 영화 등의 제목에 나오는 첫 단어와 마지막 단어의 첫글자와 관서는 대문자를 씁니다.
- 출판물의 일부와 관련한 명사 다음에 숫자가 올 때 명사의 첫 글자를 대문자로 씁니다.
- 요일명, 휴일명, 달, 역사적 사건, 역사적 기간은 첫 글자를 모두 대문자로 씁니다.
- 천체의 이름은 첫글자를 대문자로 씁니다.
- 영어의 대문자 표기 원칙은 다음과 같습니다.
- 첫째, 중요하거나 크거나 특정한 것을 가리키거나 제목에 해당하는 명사는 모두 첫 글자를 대문자로 씁니다.
- 둘째, 그런 명사들이 이어질 때는 첫 글자를 모두 대문자로 씁니다.
- 셋째, 명사나 관사가 아닌 동사, 형용사 등은 소문자를 씁니다.
#
파스칼 표기법으로 클래스 이름 짓기- 클래스의 첫 글자는 어디에 위치하든 모두 대문자로 씁니다.
#
카멜 표기법으로 함수, 변수의 이름 짓기- 카멜 표기법은 첫 단어를 빼고 나머지 단어의 첫 번째 글자만 대문자로 씁니다.
- 주로 함수나 변수에 사용합니다.
- 함수는 동작을 시키는 명령어 개념이므로 첫 단어가 주로 동사입니다. 변수는 형용사로 시작하는 경우도 많습니다.
#
상수는 모두 대문자로 쓴다- 상수는 값이 변해서는 안된다는 점을 강조하고 주의하기 위해서 대문자를 선택했습니다.
- 회사 안에서는 통일하는 것이 좋습니다.
#
패키지와 모듈은 모두 소문자로 쓴다- 패키지와 모듈은 클래스와 함수보다 더 높은 위치입니다. 그러나 소문자로만 씁니다.
- 이유는 패키지와모듈이 클래스를 모으거나 함수를 담아놓는 통이기 때문입니다.
- 실용적인 이유는 패키지 이름과 클래스 이름을 혼동할 수 있고, 모듈 이름과 함수 이름을 헷갈릴 수 있어서 이가 컨벤션이 되었습니다.
#
BEM 표기법- CSS에서 사용하는 BEM(Block, Element, Modifier) 표기법은 '대상__요소--상태'를 의미합니다.
- 대상의 요소나 부분을 의미할 때는 언더스코어 두 개(__)로 연결합니다.
- 대상이나 요소의 상태나 속성을 의미할 때는 하이픈 두개(--)로 연결합니다.
#
가독성과 소통- 가장 중요한 것은 가독성과 소통 때문입니다.
- 요즘은 개발 툴이 워낙 발전해서 가독성이 높습니다.
- 가독성이 높다고 소통이 더 잘되는 것은 아닙니다.
- 같은 부서의 개발자, 또는 하나의 프로그램과 관련된 개발자들끼리는 코딩하기 전에 기본적인 컨벤션 규칙을 정하는 것이 중요합니다.
#
2. 변수 이름을 잘 짓는 법#
i는 변수 이름이지만 d는 아니다- 가장 많이 쓰는 변수 이름은
i
,LOG
,result
입니다. - 좌푯값으로
x
,y
도 괜찮습니다. day
는 일자의 의미를 사용하지만, 임의의 날은someday
, 오늘은today
, 특정한 날은thisDay
, 마지막 날은finalDay
를 사용하는 것이 좋습니다.
#
긴 이름? 짧은 이름? 검색 잘 되는 이름!- 과거에는 헝가리안 표기법이 유익했으나 현재는 변수 타입이 자동이 되었기 때문에 레거시가 되었습니다.
#
복수형을 나타내는 s를 붙일까 말까?- 배열에
s
를 붙이는 방법과array
와list of
를 쓰는 것이 나을 수도 있습니다.
#
약어를 쓰는 것이 좋을가? 안 쓰는 것이 좋을까?- 약어를 사용하는 기준은 보편성이 되어야 합니다.
- 회사나 업계에서 많이 사용하는 약어라면 코드에 사용하는 것이 좋습니다.
#
중요한 단어를 앞에 쓴다- 중요한 것이 앞에 와야합니다.
int totalVisitor
보다는int visitorTotal
이 맞습니다.
#
함수 이름 짓는 순서- 불필요한 단어를 제외하는 것이 중요합니다.
- 1함수 1업무 규칙을 적용하고, 묶을 수 있는 것은 묶어야합니다.
- 다음의 순서로 진행할 수 있습니다.
#
3. 좋은 이름의 기준, SMART#
한 번에 좋은 이름을 지을 수도 없다- 처음 지어졌을 때는 이를 부를 명칭이 없어 좋은 이름을 못지을 수도 있습니다.
#
좋은 이름이 가진 5가지 특징- 좋은 이름인지를 확인하는 5가지 기준을 SMART라고 합니다.
- easy to Search: 검색하기 쉽게
- easy to Mix: 조합하기 쉽게
- easy to Agree: 수긍하기 쉽게
- easy to Remember: 기억하기 쉽게
- easy to Type: 입력하기 쉽게
#
easy to Search: 검색하기 쉽게 이름 짓는 법- 검색하기 쉬운 이름은 고전적 범주화를 이용해 한 단계상위 범주의 이름을 태그처럼 덧붙이면 됩니다.
- 회사의 네이밍 컨벤션에 위배되지 않는지 먼저 따져 본 뒤 사용해야 합니다.
#
easy to Mix: 조합하기 쉽게 이름 짓는 법- 가장 좋은 방법은 개발 언어의 문법과 조합해 이름을 짓는 것입니다.
#
easy to Agree: 수긍하기 쉽게 이름 짓는 법- 이름을 쓰는 것이 아무렇지도 않아야 합니다.
- 일을 효율적으로 해야 하는 것처럼 이름 짓기도 효율적으로 해야합니다.
#
easy to Remember: 기억하기 쉽게 이름 짓는 법- 뇌는 감각적인 것을 좋아합니다.
- 약자 등을 쓸 때 시청각적으로 완결시키면 더 잘 기억합니다.
- 이미 널리 알려진 용어는 그냥 쓰는 것이 효율적입니다.
#
easy to Type: 입력하기 쉽게 이름 짓는 법- 자주 쓰거나 중요한 이름이라면 입력하기 쉬운지, 오타를 낼 가능성이 작은지, 다른 사람에게 말로 전달하기 쉬운지 검토해 보는 것이 좋습니다.
#
4. 좋은 코드에는 주석이 없다?#
이름을 잘 지으면 주석을 줄일 수 있다- 이름을 잘 지으면 주석을 대폭 줄일 수 있습니다.
#
처음부터 주석 없이 코딩하는 연습을 하자.#
주석이 필요한 때도 많다.- 영어 실력이 낮으면 한글주석으로 한 번 더 설명함으로써 영작문이나 실수를 줄일 수 있습니다.
- 주석이 코드의 정확성을 높이고 버그를 줄이는 계기가 된다는 얘기입니다.
#
5. 다른 개발자를 배려하는 주석 쓰기#
코드의 의미를, 주석은 의도를- 주석은 다른 개발자를 배려하는 마음으로 작성합니다.
- 이유를 알려주는 것
- 개발자가 새롭게 발견한 것
- 예상 질문과 답
- 할 일이나 주의, 개선 아이디어를 주는 것
- 다른 사람에게보완을 요청하는 것
- 개발자의속마음을 표현한 것
#
주석의 반복- 특정 코드를 처음부터 읽지 않고, 필요할 때만 특정 함수를 검색하는 경우도 있으므로 같은 주석이라도 반복해서 써야합니다.
#
주석의 발췌와 요약- 대표적인 예시는 다음과 같습니다.
- 이를 수정하면 다음과 같습니다.
- 마찬가지의 예시는 다음과 같습니다.
#
주석도 코드다.- 잘못 쓴 주석은 개발자가 신경 쓰지 않으면 결코 바로잡을 수 없습니다.
- 주석의 악순환에서 벗어나는 가장 좋은 방법은 주석도 코드라고 생각하는 것입니다.