사소해 보이지만 가장 쉽고 중요하다.
이름은 변수, 함수, 인수, 클래스, 패키지, 소스파일, jar, war... 어디에나 붙는다.
요즘은 IDE발전으로 일괄 이름 바꾸기가 편하다. 따라서 크게 고민하지 말고 주저 없이 이름을 붙여라
의도를 분명히 밝혀라
좋은 이름을 지으려면 시간이 걸리지만 그보다 좋은 이름으로 절약하는 시간이 더 크다.
의도가 드러나는 이름을 사용하면 코드 이해와 변경이 쉬워진다.
그릇된 정보를 피하라
헛갈릴만한 약어 사용을 피하라. 독자에게 그릇된 정보를 제공한다.
서로 흡사한 이름을 사용하지 않도록 주의하자.
유사한 개념은 유사한 표기법을 사용하자.
의미있게 구분하라
불용어 사용을 피하자. 아무런 정보를 주지 못한다.
내가 만약 계좌 정보 알려주는 메서드를 찾는다. 한 클래스에 다음과 같이 메서드가 존재한다. 도대체 무엇을 호출해야 하는가?
getActiveAcount();
getActiveAccounts();
getActiveAccountInfo();
누가 봐도 의미를 파악할 수 있게 구분하자.
발음하기 쉬운 이름을 사용하라
발음이 어려운 이름을 사용하면 상호 간 커뮤니케이션이 어려워진다.
int zkaq ; // 엑스케이이이큐에 값을 저장하면되요!
int sum ; // 썸에 값을 저장하면 되요!
검색하기 쉬운 이름을 사용하라
문자를 하나만 사용하는 이름과 상수는 텍스트 코드에서 쉽게 눈에 띄지 않는다
내가 상수로 지정한 MAX_CLASSES_PER_STUDENT 가 찾기 쉬울까?
해당 상수의 값인 7로 찾는 것이 찾기 쉬울까?
특히 한자리 변수는 찾기 어렵다. 이런 관점에서 긴 이름이 짧은 이름보다 좋다. 검색하기 쉬운 이름이 상수보다 좋다.
인코딩을 피하라
과거 코딩할 때나 필요했던 정보
자바는 강타입 언어라 필요 없다.
자신의 기억력을 자랑하지 마라
문자 하나만 사용하는 변수 이름은 문제가 있다. 간단한 for 문에서 사용하는 i,j..등은 괜찮지만 나머지 상황에서는 누가봐도 명확하게 이름을 지어야 한다.
전문가 프로그래머는 자신의 코드를 남들이 최대한 이해하기 쉽게 한다.
클래스 이름
클래스 이름은 일반적으로 명사나 명사구를 사용하고, 동사는 피한다
Manager,Processor,Data,Info 등과 같은 모호한 단어는 피한다.
메서드 이름
메서드 이름은 동사나 동사구를 사용하자
접근자, 변경자, 조건자는 자바빈 규약에 따라 set, get, is 를 붙이자.
기발한 이름은 피하라
재미난 이름보다 명료한 이름을 선택하라
의도를 분명하고 솔직하게 표현하라
한 개념에 한 단어를 사용하라
추상적인 개념 하나에 단어 하나를 선택해 이를 고수한다.
예를 들어, 똑같은 기능 메서드를 클래스마다 get, fetch, retrieve로 제각각 부르면 혼란스럽다.
메서드 이름은 독자적이고 일관적이어야 한다. 그래야 주석을 뒤져보지 않고도 프로그래머가 올바른 메서드를 선택한다.
말장난을 하지마라
한 단어를 두 가지 목적으로 사용하지 마라. 다른 개념에 같은 단어를 사용하는 것은 말장난에 불과하다.
add를 더하기로 사용했는데 다른 클래스나 메서드에서 집합에서 추가의 뜻으로 add를 사용하면 옳은 것인가? 이럴때는 insert, append를 사용하라
프로그래머는 코드를 최대한 이해하기 쉽게 짜야 한다. 주의깊게 봐야 이해가능한 코드가 아니라 대충 훑어봐도 이해할 코드 작성이 목표다.
해법 영역에서 가져온 이름을 사용하라
코드를 읽을 사람도 프로그래머라는 사실을 명심하자. 그러므로 전산용어, 알고리즘 이름, 패턴 이름 등을 사용해도 괜찮다.
예를 들어, Factory 패턴을 사용했다면 CustomFactory 이런식
문제 영역에서 가져온 이름을 사용하라
적절한 프로그래머 용어가 없다면 문제 영역에서 이름을 가져온다.
의미 있는 맥락을 추가하라
클래스, 함수, 이름 공간에 맥락을 부여하자.
street, city ,state, zipcode 라는 변수가 있을때
쭉 훑어보면 맥락상으로 주소라는 것을 알 수 있다.
허나 단순히 하나의 변수만 사용할때 state 만 사용한다고 할 때 이게 주소인지 확실히 알 수 있을까?
이럴때 접두사를 붙인다 addrStreet, addrCity, addrState, addrZipcode
더 좋은 방법은 클래스로 묶는 것이다. Address 클래스를 만들고 멤버로 추가하자
불필요한 맥락을 없애라
의미가 분명한 경우에 한해서 짧은 이름이 긴 이름보다 좋다. 이름에 불필요한 맥락을 추가하지 않도록 주의하자.
마치면서
좋은 이름을 선택하려면 설명 능력이 뛰어나야한다. 이는 문화적 배경이 같아야한다
대부분 사람은 자신이 짠 클래스, 메서드 이름을 모두 암기하지 못한다.
이부분은 개발도구에 맡기고 개발자는 자료 구조처럼 읽히는 코드를 짜는데 집중해야한다.
이름을 자신 나름대로 바꿨다고 질책받았다고 해서 포기하면 안된다.
요즘은 IDE에서 쉽게 이름을 일괄로 바꿀 수 있기 때문에 더 좋은 이름이 생각나면 주저 없이 바꾸
'IT책, 강의 > 클린코드(Clean Code)' 카테고리의 다른 글
4장 주석 - 나쁜 주석 (1) | 2022.10.01 |
---|---|
4장 주석 - 좋은 주석 (0) | 2022.09.28 |
3장 함수 - 2 (2) | 2022.09.25 |
3장 함수 - 1 (0) | 2022.07.05 |
1장 깨끗한 코드 (0) | 2022.06.27 |