소프트웨어에서 이름은 어디나 쓰인다. 이름을 잘 지으면 편하다.
의도를 분명히 밝혀라
변수 이름을 의도를 분명하게 짓는 것은 정말 중요하다. 좋은 이름을 지음으로 시간을 절약할 수 있다
간단한 문장 속에도 변수의 의도를 파악하기 힘든 이름으로 되어있다면 변경이 필요하다.
그릇된 정보를 피하라
예로 여러 계정을 그룹으로 묶을 때, 실제 List가 아닌데 accountList 라는 이름은 맞지 않다.
보통 프로그램에서 List는 나열된 데이터를 의미하기 때문이다. 이런 경우 그릇된 정보를 전달할 수 있다.
또 서로 비슷한 이름을 쓰는 것, o / l / I / 과 같이 비슷한 문자로만 이루어진 변수는 자제할 것!!
의미 있게 구분하라
Product라는 클래스가 있을 때, 다른 클래스를 ProductInfo 혹은 ProductData라고 부른다면 개념을 구분하지 않은 채 이름만 달리한 경우라고 할 수 있다.
저 세개의 차이를 구분할 수 있는가? 내가 제품 정보를 저장하려 할 때 위 세개 클래스 중 어느 클래스를 사용해야 할까?
읽는 사람이 차이를 알도록 이름을 지어라
발음하기 쉬운 이름을 사용하라
이건 함축 단어 사용을 자제하라고도 볼 수 있겠다
클래스 이름
클래스 이름과 객체 이름은 명사나 명사구가 적합하다. 동사는 사용하지 않는다.
예시 : Manager, Processor, Data, Info 등과 같은 단어는 피한다
메서드 이름
메서드 이름은 동사나 동사구가 적합하다.
한 개념에 한 단어를 사용하라
추상적인 개념 하나에 단어 하나를 선택이 이를 고수한다
만일 "가져온다" 는 액션이 있을 때 fetch, retrieve, get으로 각각 부르면 혼란스럽다.
또 예로 controller, manager, driver 를 섞어쓰면 구분하기 힘드므로 바꿔야한다.
의미 있는 맥락을 추가하라
스스로 의미가 분명한 이름이 없지 않지만 대다수 그렇지 않다.
그래서 클래스, 함수, 이름 공간에 넣어 맥락을 부여한다. 모든 방법이 실패하면 마지막 수단으로 접두어를 붙인다.
예를 들어, firstName, lastName, state, zipcode 변수가 있다면 이게 사용자 주소라는 사실을 알 수 있다
하지만 state 하나만 사용한다면? state가 주소 일부라는 사실을 금방 알아채긴 쉽지 않다.
그래서 이 경우 addr 이라는 접두어를 붙여 addrState 라고 한다면 해당 변수가 주소 일부라고 알 수 있다.
불필요한 맥락을 없애라
일반적으로 짦은 이름이 긴 이름보다 좋다. (단, 의미가 분명한 경우)
이름에 불필요한 맥락을 추가하지 않도록 주의한다.
2장을 읽으면서 단순히 이름을 이렇게 지어봐~! 가 아니라 자세한 예시를 대며 이렇게 이렇게 지으면 너한테도 도움이 될 거다 라고 하니 읽기 좋았다
안그래도 프로젝트에서 모델 클래스 이름이 상당히 비슷한 부분이 있어 (어쩌구Data, Detail 이런 식으로 만듦..) 바꿔야겠다고 생각했다
나뿐 아니라 다른 사람도 읽었을 때 이해하기 쉬운 이름으로!!
이름을 잘 짓자
함께 읽으면 좋은 자료
https://soojin.ro/blog/naming-boolean-variables
https://soojin.ro/blog/english-for-developers-swift
'책' 카테고리의 다른 글
[클린 코드: Clean Code] 6장 객체와 자료 구조 (0) | 2019.08.11 |
---|---|
[클린 코드: Clean Code] 5장 형식 맞추기 (0) | 2019.08.10 |
[클린 코드: Clean Code] 4장 주석 (0) | 2019.08.08 |
[클린코드: Clean Code] 3장 함수 (0) | 2019.08.05 |
[클린코드: Clean Code] 추천사부터 1장 깨끗한 코드까지 (0) | 2019.07.30 |