2024. 2. 25. 10:21ㆍ좋은 코드 (Good Code)/좋은 이름 (Good Name)
Singular vs Plural
일상 생활 속에 단수와 복수는 굉장히 중요하다.
오늘 아침에 해가 밝았다
가 자연스럽지
오늘 아침에 해들이 밝았다
라고 표현하면 너무 어색하다.
해는 한 개 일 수 밖에 없기 때문이다.
우리가 변수를 사용할 때는 자료형을 계속 명시하지 않는다.
그렇기에 코드를 읽을 때도 자료형은 선언 때 빼곤 보이지 않는다.
자. 정리하면
코드를 작성함에 있어서 변수가 중요한 건 우리 모두 알고 있고
변수 이름이 단수 또는 복수인지에 따라 코드 표현이 어색해지는 지 보이고
실제로는 단수인데 복수처럼 써도 우리는 변수 선언 시절을 기억하지 않기 때문에 모른다.
우리는 이름에 정말 중요한 표현 양식을 줘야 한다.
많은 방법이 있겠지만, 가장 쉽고 많은 경우를 포용하는 건 단수, 복수 구분이다.
Object
시작부터 말하면, 문법적 오류보다 코드적 표현이 더 중요하다.
저기에 물들이 있어
라는 문장이 있다면 '물은 셀 수 없는데 왜 물들이라고 표현하는 거지...?' 라고 문법적 오류를 지적할 수 있다.
우리 세계로 보면
baekWater = BaekWater()
sambaWater = SambaWater()
waters = [baekWater, sambaWater]
print(f"there are {waters}")
말이 된다.
여기서 Water이 아니라 WaterBottle 이런 식으로 써야된다고 한다면, 얼른 손절하길 바란다.
baekWaterBottle = BaekWater()
자세하게는 다음에 말하겠지만, 본래 이름과 다른 이름을 붙이는 것 만큼 끔찍한 일은 없다.
그게 셀 수 있든 없든 거지같던 지 간에 최초로 지은 이름은 그대로 사용해야 한다.
좋은 코드 중에는 이름이 이상한 건 없다.
역으로 이름이 이상한 건 좋은 코드가 아니다.
이름이 이상하다는 건 사용하지 말라는 것과 같다.
그러니 제발 우리는 뭐가 되었든 최초로 지은 이름을 그대로 사용해야 한다.
1개는 단수다.
baekWater = BaekWater()
2개 이상은 복수다.
waters = [baekWater, sambaWater]
분명히 말하고자 하는 바는, 아래처럼 사용하지 말라는 이야기이다.
water = [baekWater, sambaWater]
print(f"there are {water}")
정리해보면 결국 객체가 1개인지 2개 이상인지로 구분할 수 있어 보인다.
그렇다. 그렇게 구분하면 된다.
이렇게만 해준다면 대부분의 단수 복수 문제는 해결된다.
Data Type
단수냐 복수냐 문제는 사실 데이터 타입을 암시하는 데 큰 의미가 있다.
다시 한 번 말하지만, 함수 내용을 읽으면서 우리는 자료형을 기억하지 못한다.
하지만 일종의 연상법을 사용하면 기억하는 놀라운 일이 생기는데,
단수 복수 뿐 아니라 조그만한 단어를 힌트처럼 뒤에 붙여주면 된다.
경험적으로는 4개 밖에 없었다.
표현 방법 | 예시 | |
객체 1개 | 단수 | water |
배열 (List, Set) | 복수 | waters |
맵 (Map) | 키 And 값 + Map | labelAndWaterMap |
기타 자료구조 | 단수 + 자료구조 이름 | waterQueue |
이정도만 해도 99.9%의 이름들을 결정할 수 있다고 본다.
다만 Map이라는 용어는 일관성있게 본인이 결정해도 된다.
예를 들어 파이썬에서 맵은 주로 dictionary니까, labelAndWaterDict로 써도 된다.
Summary
- 1개는 단수, 2개 이상은 복수다.
- 자료형을 암시하는 이름이 좋다.
'좋은 코드 (Good Code) > 좋은 이름 (Good Name)' 카테고리의 다른 글
6. 쓰다가 마는 건 용납하지 못한다 (0) | 2024.03.03 |
---|---|
5. 이름을 만들어주자 (0) | 2024.02.25 |
3. 명사와 동사를 구분할 때가 왔다 (0) | 2024.02.15 |
2. 애매모호함을 버리자 (1) | 2024.02.14 |
1. 어쨌든 이름은 이해할 수 있어야 한다 (1) | 2024.02.13 |