본문 바로가기
Etc

Clean Code, 클린 코드 란

by 올엠 2022. 7. 5.
반응형

Clean Code, 클린 코드 란 무엇일까?

어떻게 보면, 많은 이들이 자신 만의 코드나 돌아가기만 하면 되는 코드보다 클린 코드가 가지는 장점이라면, 발전성이라고 할 수 있다.

IT에서는 특이하게도 남을 이해시키고, 공유하였을때 내가 더 많은 것을 얻게 된다.

이러한 시작점이 바로 클린 코드가 아닐까 한다.

클린 코드가 무엇인지를 한줄로 요약해보면 아래와 같다.

컴퓨터가 아닌 사람이 읽고 이해하기 쉬운 코드

 

한가지 예를 들어보겠다.

아래 코드는 그렇게 복잡하지 않은 코드라서 현재 읽는데 크게 문제가 되지 않는다.

하지만 만약 1000줄, 혹은 더 복잡한 프로그램에서 사용된다면 어떻게 될까?

 

def check(u):
    for x in u:
        if x.startswith('http://') or x.startswith('https://'):
            return False
        if not '.' in  x:
            return False
    return True


check('naver.com')

만약에 아래와 같이 함수 명과, 파라미터의 의미를 정확하게 명시를 해준다면, 보다 이해하기 쉬운 클린 코드에 가깝게 된다.

def validate_domain(url_list):
    for url in url_list:
        if url.startswith('http://') or url.startswith('https://'):
            return False
        if not '.' in  url:
            return False
    return True


validate_domain('naver.com')

 

1. 읽기 쉽고 의미를 파악하기 쉽도록 한다.

사람이 읽기 쉽다는 의미는 사람이 빠르게 이해할 수 있도록 구성해야 한다는 것을 의미한다. 즉 코드을 이해하는 시간을 줄일 수 있도록 작성하여야 한다.

예를 들어 함수명이 check 고 할때 이름은 확인을 의미가 된다. 하지만 어떤것을 체크하는지 명확하지 않다.

따라서 해당 함수가 처리하는 이름을 넣어주는 것이 가장 적절하다고 할 수 있다.

가장 간단히 구현할 수 있는 방법은 동사+명사를 통해 해당 함수가 동작하는 동사와 수행하는 item 을 명사화 하여 적는것이 간결하면서 의미 파악을 하는데 수월하다.

- 단 3개이상의 단어를 사용하는 것은 회피하는게 좋다. 2~3개가 가장 적절하다.

2. 코드는 간결하고 직관적으로 작성한다.

불필요한 코드가 있다면 삭제하고, 최소한의 코드를 사용해야 한다.

아래 글은 Python에서 제공하는 지능형 리스트를 사용하는 예제를 글로 작성한 것이다. 이와 같은 방법을 이용해서 보다 간결한 코드를 작성할 수 있다.

Python - 지능형 리스트(List Comprehension) 이해 (tistory.com)

 

Python - 지능형 리스트(List Comprehension) 이해

오늘은 Python에서 많이 사용되는 지능형 리스트(List Comprehension)에 대해서 이해해보는 시간을 가져보고자한다. 지능형 리스트는 List 값을 생성하는데 코드를 보다 간결하게 작성할 수 있도록 도와

asecurity.dev

지능형 리스트 사용전의 코드

sum = []
for number in range(10):
	sum.append(number)

print(sum)

위 코드를 지능형 리스트로 만들면 아래와 같다. 조건식이 더 많다면 더 많이 간결하게 코드 작성이 가능하다.

sum = [number for number in range(10)]

print(sum)

3. 복잡한 중첩, 크거나 긴 코드 블록을 피한다.

만약 중첩되는 코드가 있다면, 함수, 클래스를 이용해 재사용 할 수 있도록 한다.

만약 중복적으로 사용하고 있다면, 이를 함수로 만들고, 클래스를 통해서 반복되는 빈도를 최소화 할 수 있다.

예를 들어 만약 VirusTotal JSON을 사용할 경우 아래와 같이 변화가 가능하다.

vt_keys = vt_json['data']['attributes']['last_analysis_results'].keys()
for vt_key in vt_keys:
	print(vt_json['data']['attributes']['last_analysis_results'][vt_key]['result'])

아래와 같이 변수를 지정하여 사용할 경우 코드 의  길이를 반복적으로 길게 사용하는 것을 방지 할 수 있어, 버그와 가독성을 높일 수 있다.

vt_last_analysis = vt_json['data']['attributes']['last_analysis_results']
vt_keys = vt_last_analysis.keys()
for vt_key in vt_keys:
	print(vt_last_analysis[vt_key]['result'])

4. 패턴이나 공통 규칙을 사용한다.

전체적으로 공통으로 사용하는 코드 작성 규칙을 정하여 사용하면 보다 이해하기 쉬운 코드를 작성할 수 있다.

 

이러한 코드를 작성하는데 중요한 부분은 코드를 통해 여러분이 작성한 의미를 다른 사람에게 전달하는데 있다.

코드 작성의 즐거움을 얻을 수 있고, 단순한 개발이 아닌 하나의 스토리를 만들어 갈 수 있다. 이렇게 만들어지는 스토리는 많은 개발자들과 서로 소통하고 발전할 수 있게 되어 결과적으로 자신의 발전과 이어지게 된다.

반응형