CS/클린코드(cleancode)

2장. 의미 있는 이름

rachel_13 2022. 10. 30. 02:09

2-1. 의도를 분명히 밝혀라.

코드의 함축성

주석이 필요하다면 변수/함수/클래스명이 그 의도를 분명히 드러내지 못했다는 것이다.

아래 예시를 보자

[before]

const success = (position: {=
coords: { longitude: number; latitude: number };
}) => {
setPos({
...pos,
longitude: position.coords.longitude,
latitude: position.coords.latitude,
});
};

코드상으로는 문제가 없어 보인다.

success -> 성공인 건 알겠는데, 그래서 뭐가 성공했을 때인데?

[after]

const findUserLocation = (position: {
coords: { longitude: number; latitude: number };
}) => {
setPosition({
...position,
longitude: position.coords.longitude,
latitude: position.coords.latitude,
});
};

이 코드에서 “성공"의 의미는 유저의 위치를 찾았을 때 이다.

따라서 함수명만으로도 의미를 파악할 수 있도록 변경했다.

pos 라는 변수명또한 불필요하게 축약되어 있다. 원래의미를 담도록 수정하였다.

이렇게 하니, 이름만 보아도 함수의 기능이 명확해진다.

이름이 함수의 기능을 “함축"할 수 있도록 작명하는 것이 중요할 것이다.

 

2-2. 그릇된 정보를 피하라.

일관성이 떨어지는 표기법 또한 그릇된 정보이다..!

관용적인 표현또한 사용하지 말 것. 이미 general 하게 어떤 표현식으로 사용하고 있는 이름은 변수명으로 사용하지 않는다.

 

2-3. 의미있게 구분하라.

가장 흔히들 하는 실수가 바로 변수명에 넘버링을 하는 것이다.

이름을 다르게 해야 한다면, 다른 기능이어야 할 것이다.

선언을 남발하기 전에, 내가 작성하려는 코드가 어떤 기능을 가지고 있는지 곰곰히 생각해볼 필요가 있다.

 

2-4. 발음하기 쉬운 이름을 사용하라.

2-5. 검색하기 쉬운 이름을 사용하라.

이름길이는 범위 크기에 비례해야 한다.

변수 또는 상수가 여러 코드에서 사용된다면, 이름이 길더라도 의미있게 사용하는 것이 검색에 유용하다.

 

2-8. 클래스 이름

명사, 명사구

(ex. Customer, Account)

(Manager, Processor, Data, Info)

 

2-9. 메서드 이름

동사, 동사구

(ex. postPayment, deletePage, save)

접근자, 변경자 , 조건자는 get, set, is를 붙여서 사용한다.

ex. getName

 

2-11. 한 개념에 한 단어를 사용하라

 

2-12. 말장난을 하지 마라

11번을 지키게 되면서, 여러 클래스에 동일한 메서드가 생기게 된다

이 때 모든 메서드의 매개변수와 반환값이 의미적으로 동일하다면 상관없다.

단, 앞서 사용하던 메서드와 다른 의미라면, 기존 메서드와 맥락이 다른 것이다.

이때는 기존 메서드명을 따르는 것이 바람직하지 않다.

 

“우리는 대충 훑어봐도 이해할 코드 작성이 목표다.”

 

2-15. 의미 있는 맥락을 추가하라

'CS > 클린코드(cleancode)' 카테고리의 다른 글

10장. 클래스 - 자바스크립트 클린코드  (0) 2022.11.20
7장. 오류 처리 - 자바스크립트 클린코드  (0) 2022.11.06
6장. 객체와 자료구조  (0) 2022.11.06
5장. 형식 맞추기  (0) 2022.10.30
3장. 함수  (0) 2022.10.30