3. 명사와 동사를 구분할 때가 왔다

2024. 2. 15. 07:46좋은 코드 (Good Code)/좋은 이름 (Good Name)


Noun vs Verb

 

솔직히 나는 어학 박사가 아니기 때문에 명사와 동사의 엄밀한 차이는 모른다.

그냥 명사는 어떤 물건이나 정지된 무언가를 의미하고

동사는 해당 명사가 움직이는 행위를 의미하는 것 같다.

 

장담컨데, 세상의 99.9%의 코드는 이 정도만 알아도 된다.

즉 누가 그 코드를 짰던 지 간에 명사와 동사로 구분할 수 있다는 것이다.

 

왜 우리는 코드에 명사와 동사를 구분해서 넣을까?

그건 우리가 어떤 무언가를 만들어서

나름 그 자체에 이름을 붙여두고

그 무언가가 동작하는 행위도 이름을 만들고 싶어하기 때문이다.

 

다음 두 예문을 코드로 표현해보자

고양이 색깔은 하얀색입니다
cat_color = 'white'

 

고양이 색깔을 말합니다.
def say_cat_color(color: str):
    print(color)

 

 

고양이 색깔에 이름을 붙여두고

그 이름을 말하는 행위도 이름을 붙였다.

 

너무 어렵게 생각하지 말자.

우리가 그 이름을 불렀을 때, 정지되거나 움직이거나 둘 중 하나다.

정지된 건 명사고, 움직이면 동사다.

 

본인이 이 두 가지를 구분해서 잘 쓰고 있었다면 이 다음부터는 안 읽어도 된다.

정말 이게 전부다.

 

 

 

 

 


Function = Verb

 

아직도 내가 동사와 명사로 이름을 잘 못 짓겠다 한다면 위 공식을 기억하자

함수가 명사가 되는 걸 본 적도 상상해본 적도 없다. 즉 반례가 없다.

 

아래처럼 만든 함수를 호출하면 도대체 뭘 할 지 상상이 가는가?

def cat_color(...

 

함수는 무언가 동작한다는 것이다.

함수 내용에는 객체의 속성을 바꿀 수도 있고, 단순 계산으로 결과값을 반환해줄 수도 있다.

뭐가 되었든 주어진 절차대로 한 줄 한 줄 착실히 동작할 것이다.

 

동작이라는 건 동사다.

그러니 응당 아래처럼 써야 맞다.

def draw_cat_color(...
def print_cat_color(...
def set_cat_color(...

 

이제 말이 된다.

만일 어떤 경우에는 무조건 함수 이름이 명사가 되어야 한다고 한다면,

그건 애초부터 함수로 만들 게 아닌 것이다.

 

그리고 함수가 아닌 나머지는 그냥 명사로 만들자.

 

 

 

 

 


Naming Order

 

이제 명사와 동사를 구분할 줄 안다면, 다음부터는 순서를 따져보자.

나는 주로 명사를 맨 마지막에 두는 편이다.

beautiful_cat_color = 'rainbow'

 

형용사나 지명은 앞에 차례대로 나열하고 가장 중요한 주체는 맨 마지막에 둔다.

원래 영어를 읽을 때도 이렇게 읽기 때문에 편하다.

 

아래처럼 읽으면 조금 어색하다.

beautiful_color_of_cat = 'rainbow'

 

 

하지만 이렇게 쓴다고 굳이 태클을 걸 마음은 없다.

 

문제는 아래처럼 사용하는 경우다.

beautiful_dog_color = 'rainbow'
beautiful_color_of_pony = 'rainbow'

 

이런 이름들을 보면 정말 난감하다.

단어 배열 순서가 서로 다르다면, 응당 의미도 다를 것이라 기대하기 때문이다.

 

코드는 책을 쓰는 것과 다르다.

언어적 유희를 마음껏 발휘해도 되는 장소가 아니라 - 어떻게하면 술술 잘 읽어내려갈 지에 초점을 먼저 맞춰야 한다.

그리고 여기서 가장 중요한 건 일관성이다.

본인이 명사끼리 배치를 어떻게 할 지 결정했다면, 모든 배치를 그렇게 해야 된다.

 

동사도 마찬가지다.

나는 주로 동사는 맨 앞에 두는 편이다.

draw_cat_color(...

 

이렇게 하면 첫 시작부터 이게 함수인지 변수인지 구분하기가 편하다.

또 그대로 읽으면 - 그대로 영작이 되기도 한다.

 

그렇기에 이렇게 쓰는 건 피하길 바란다.

cat_color_draw(...

 

draw가 그리다라는 동사도 있지만, 그림이라는 명사도 되기 때문에 살짝 애매해진다.

일전에도 말했지만 애매한 표현은 최대한 피하는 게 좋다.

 

 

 

 

 


Summary

 

1. 명사와 동사를 구분하자

2. 함수는 동사로 이름을 짓는다

3. 단어 순서를 일관성있기 유지하자