2024. 2. 25. 11:23ㆍ좋은 코드 (Good Code)/좋은 이름 (Good Name)
No Name
시작하기에 앞서
의미가 있는 건 모두 이름을 가진다.
따라서 적어도 코드 세계에서는 이름을 못 만드는 건 없다.
모든 코드는 의미를 가지고 있기 때문이다.
이제는 코드에 이름이 없는 걸 발견하게 되면, 이유를 알려고도 하지 않는다.
그래, 본인은 나름의 변명과 근거를 들어 설명을 하겠지만,
어쨌든 그걸 말하는 본인도 결국 의미를 말하기 때문에 모순이다.
무슨 이야기냐고?
상수 이야기이다.
Contant
나는 상수란, 1) 이름이 없고 2) 변경하는게 하늘의 별따기인 값이라고 정의한다.
코드를 읽다보면 이런 상수가 심심치 않게 등장한다.
bagPrice = 1000
if (bagPrice > 2000) {
print("bag price over a budjet")
}
가방 가격이 2000보다 큽니다.
아니... 2000이 도대체 뭔데...
2000을 설명해달라고 하면 또 나름 설명을 하겠지.
본질적으로 나는 이 구조가 잘못되었다는 걸 지적하고 싶은 것이다.
현재 시대에 살고 있는 우리는, 설명해야 하는 코드는 쓰레기나 다름 없기 때문이다.
이건 코드에 영혼이 있어 '내가 뭡니다'라고 설명하는 시대가 올 때나 의미있는 표현 방법이다.
만약 우리가 키보드를 샀는데, 키에 각인이 없다고 해보자.
근데 또 키 배열이 우리가 아는 것과 다르다.
쓰겠는가...?
아니 애초에 돈주고 사겠는가.
변수를 사용한다는 건, 어떻게든 변수 이름을 짓게 만들기 때문에 이런 걱정은 덜하다.
반대로 상수는 위처럼 그냥 바로 사용하기 때문에 이런 실수를 범하기 쉽다.
BUDJET_AMOUNT_LIMIT = 2000
bagPrice = 1000
if (bagPrice > BUDJET_AMOUNT_LIMIT) {
print("price over a budjet")
}
가방 가격이 예산 제한보다 큽니다.
가 훨씬 깔끔하다.
Naming
상수는 변경되면 안된다.
변경 가능 지점을 제한하는 방법은 각 언어마다 있겠지만, 가장 중요한 건 인지 가능 여부이다.
상수인지 아닌지 확인하는 방법이야 혼자서 고민하면 많이 나오지만,
적어도 나는 매번 맨 위로 올라가 선언 부분을 보는 건 싫다.
그럼, 그냥 이름을 상수처럼 지으면 된다.
변수 이름 뒤에 Contant와 같은 상수 표현식을 붙일 수도 있고, Contant 구조체를 만들어서 독단으로 사용할 수 도 있다.
다만 관습적으로 상수는 근접한 지역에서 대문자 + 언더스코어(_) 조합으로 사용한다.
뭐, 코드를 본인만 읽으려면 마음대로 표현을 만들어도 된다.
다같이 읽으려면 관습을 따라야 된다. 그래야 읽어주기 때문이다.
그래, 그냥 관습을 따르자.
Summary
- 상수에 이름을 붙이자.
- 상수 이름은 대문자 + 언더스코어로 짓는다.
'좋은 코드 (Good Code) > 좋은 이름 (Good Name)' 카테고리의 다른 글
7. 이름은 바뀌지 않는다. (0) | 2024.03.16 |
---|---|
6. 쓰다가 마는 건 용납하지 못한다 (0) | 2024.03.03 |
4. 단수와 복수를 구분하자 (1) | 2024.02.25 |
3. 명사와 동사를 구분할 때가 왔다 (0) | 2024.02.15 |
2. 애매모호함을 버리자 (1) | 2024.02.14 |