Clean Code 작성법

Intro

안녕하세요. 예전애 유튜브채널 노마드코더에서 깨끗한 코드를 위한 5가지 팁 을 영상에서 본 후 Python 코드로 변환해서 개인적으로 저장한 것을 블로그에 작성하려고 합니다. 저의 경우 코딩을 할 때 스스로 가져야 할 마인드셋(?)으로 정리하고 있는데요. 공유하면 좋을 것 같아 포스팅 하게 되었습니다.

  • 검색이 가능한 이름을 사용하자
  • 함수명은 반드시 동사로
  • 짧은 변수명이나 (아무도 이해못하는) 축약어는 피하자
  • 함수는 단 한가지 기능만 수행하도록
  • boolean 값을 인수로 함수에 보내는 것을 최대한 방지하자

(물론 코딩스타일에는 정답은 없습니다.)

Clean Code 5가지

1. 검색이 가능한 이름을 사용하자

변수 네이밍에 대한 것인데요. 다른 사람이 읽었을 때 바로 이해가 될 수 있도록 작성하자는 것입니다.

변수명
1
2
3
4
5
6
*-- not good --*
print(86400)

*-- good --*
seconds_in_a_day = 86400
print(seconds_in_a_day)

2. 함수명은 반드시 동사로

변수 네이밍을 잘 하는 것도 중요하듯, 우리가 정의할 함수에 대한 네이밍도 굉장히 중요합니다. 이 함수가 어떤 기능을 수행하는지 밑에 코드를 안보더라도 알 수 있도록 말이죠.

함수명
1
2
3
4
5
6
7
8
9
10
*-- not good --*
def user_data():
pass
data = userData();

*-- good --*
def load_user_data(){
pass
}
user_data = load_user_data()

3. 짧은 변수명이나 (아무도 이해못하는) 축약어는 피하자

함수의 파라미터에 대한 얘기입니다.

파라미터명
1
2
3
4
5
6
7
*-- not good --*
def add_user_info(n,p):
pass

*-- good --*
def add_user_info(name,phone_number):
pass

4. 함수는 단 한가지 기능만 수행하도록

하나의 함수에서 여러가지 기능을 수행하는 것을 되도록 피하자는 것입니다. 기능 단위로 최대한 쪼개서 작성해주는 것이죠.

함수 쪼개기
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
import re

*-- not good --*
def load_user_data(name, email):
check_email = re.compile('^[a-zA-Z0-9+-_.]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+$')

if check_email.match(email) == None:
print('올바른 이메일 형식이 아닙니다')
return False

if len(name) > 5:
print('5글자 이하로 작성해주세요')
return False

# process user data
pass

*-- good --*
def check_email(email):
check_email = re.compile('^[a-zA-Z0-9+-_.]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+$')
return check_email.match(email)

def check_name_length(name):
if len(name) > 5:
return False
else:
return True

def load_user_data(name, email):

if check_email(email) == None:
print('올바른 이메일 형식이 아닙니다')
return False

if check_name_length == False:
print('5글자 이하로 작성해주세요')
return False

# process user data
pass

지금처럼 함수를 기능별로 쪼개서 정의하는 것이 가독성도 좋아지고, 코드가 길면 길수록 유지/관리 측면에서 더 좋습니다.

5. boolean 값을 인수로 함수에 보내는 것을 최대한 방지하자

boolean 값을 함수로 보낸다는 것은 그 함수에 if-else가 있다는 뜻이 됩니다. 차라리 각각의 케이스별로 함수를 분리하는 것이 좋습니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24

*-- not good --*
def send_message(text, is_private):
if is_private:
## send private message
pass
else:
## send public message
pass

send_message("Hello", False)
send_message("This is secret", True)

*-- good --*
def send_private_message(text):
## send private message
pass

def send_public_message(text):
## send public message
pass

send_public_message("Hello")
send_private_message("This is secret")

결론

이번 포스팅에서는 Clean Code 작성법 에 대해서 간단하게 정리해 봤습니다. 다시 한 번 말씀드리지만, 코드 작성에는 정답은 없습니다! 어떤 방법이 됐든, 누가 봐도 보기 쉽고 이해하기 편하게 작성하면 되는 것이니까요. 추가로!!! 개발을 시작할 때 처음부터 예쁘게 작성하려고 하기보다는 우선 모든 동작, 기능들을 구현한 후 클린 코드로 다듬어 주는 것도 좋은 순서 입니다!! 우선 이 주제는 여기까지 다뤄보도록 하겠습니다. 또 Pythonic 한 것은 또 느낌이 다르더라구요. Pythonic 한 파이썬 코딩에 대해서는 추후 더 깊게 다뤄보도록 하겠습니다

이상으로 이번 포스팅은 마치겠습니다. 추가 의견이나 수정이 필요한 부분이 있다면 언제든지 거침없는 피드백 부탁드립니다! 부족한 글 읽어주셔서 감사합니다!

Reference

댓글