책 읽다가 코딩하다 죽을래

클린코드 강의 1. 의미 있는 이름 본문

코딩/클린코드

클린코드 강의 1. 의미 있는 이름

ABlue 2021. 9. 21. 14:39

이 강의는 시리즈 별로 되어있습니다.

 

클린코드 강의 0. 클린코드의 목적[클릭]

클린코드 강의 2. 추상화[클릭]

클린코드 강의 3. 예외[클릭]

클린코드 강의 4. 리팩토링[클릭]

 

 

클린코드의 첫 번 째 원칙 의미 있는 이름입니다!

 

📖 의미 있는 이름이란?

 

 

변수 이름을 짓는 것은 프로그래머에 있어서 대단히 중요한 문제입니다.

한 번 지은 이름이 10번이고 수십 번이고 쓰이기 때문입니다.

 

(코드는 파이썬이지만 파이썬은 몰라도 다른 언어의 기본 배경지식을 이용해 이해할 수 있다면 상관없습니다.)

 

mca = 3

 

다음 코드를 봅시다.

무엇을 설명하는 것 같아 보이나요?

 

만약 제가 이런 코드를 작성한다면, 6개월 후에 mca라는 단어를 보고 원래 의미를 떠올릴 수 있을까?

하물며, 이 코드를 본 다른 개발자는 무엇을 의미하는지 몰라서 mca라는 단어를 구글링 해볼수도 있을 겁니다.

 

 

# my cat age
mca = 3

 

그러면은 주석으로 변수를 설명을 해볼까요?

주석으로 변수를 설명하는 것은 절대 해서는 안 되는 행동입니다!

차라리 변수가 길어질지라고 my_cat_age라고 명확하게 변경하는 것이 좋아요.

 

😡 아니.. 난 처음부터 my_cat_age가 적어야 하는게 맞다고 생각했는데요? 라고 생각하시는 분들 계실텐데 

한번 당신의 코드들을 남에게 보여줘보는건 어떨까요? 당신도 모르게 mca같은 변수를 습관적으로 지었던 부분들이 많이 보이실거에요. 

 

다시 한번 상기시켜봅시다

주석으로 변수를 설명하는 것은 아니 되며,

 

변수 이름은 초등학생이나 1년 후에 내가 다시 봐도 이해할 수 있도록 짜야합니다.

 

다음 예시를 보자

 

def get_them(the_list):
    result = [] 
    for x in the_list:
        if x.p1 > 19:
            result.append(x) 
    
    return result

 

 이 코드가 무엇을 의미하는 코드인지 한 번 맞혀보실래요?

 

당황스럽게도 이 함수는 나이를 입력해서 배열(the list)에 담은 후

 그중 나이가 19 이상인 사람들을 반환하는 함수입니다.

 

즉 19살 이상인 성인의 정보를 반환하는 함수에요

 

실제 코드는 정상적으로 그 기능을 완벽히 수행한다 해도

변수 이름을 이해하기 힘들게 지어놓는다면

가까운 미래에 코드를 알아보지 못할뿐더러 더 이상 새로운 코드를 추가하거나 유지 보수하기 어렵게 됩니다.

 

 

저 함수를 남들에게 이해할 수 있게 만들려면

의미 있는 변수 이름 지어야 합니다.

 

def get_adults(people):
    adults = [] 
    for person in people:
        if person.age > 19:
            adults.append(person)
    return adults

 

아까보다는 되게 많이 좋아졌다.

그런데 나라마다 성인의 기준은 다르다.

다른 나라사람이라면 19가 무엇을 의미하는지 모를 수도 있습니다.

그래서 성인의 기준을 상수로 만드는게 좋습니다.

 

ADULT_AGE = 19

def get_adults(people):
    adults = []
    for person in people:
        if person.age > ADULT_AGE:
            adults.append(person)
    return adults

 

이런 식이면 처음보다 훨씬 코드의 의도를 명확히 파악할 수 있다

 

코딩을 할 때 변수, 상수명이나 함수명 크게는 모듈, 프로젝트명까지 의미가 있는 것이 중요합니다.

'코딩 > 클린코드' 카테고리의 다른 글

클린코드 강의 0. 클린코드의 목적  (0) 2021.09.21
클린코드 강의 4. 리팩토링  (0) 2021.09.21
클린코드 강의 3. 예외  (0) 2021.09.21
클린코드 강의 2. 추상화  (3) 2021.09.21