취미가 좋다

클린 코드를 만드는 조건들 본문

Sparta Coding Club/Clean Code

클린 코드를 만드는 조건들

benlee73 2021. 8. 16. 22:09

1. 이름 정하기

  • 길어도 되므로 의미(의도) 전달이 되도록 한다.
  • 의미를 전달할 때, 인자를 활용해도 좋다.
    • 함수의 역할이 get adults from people 에서 def get_adults(people) 로 이름을 짓는다.
  • bool 결과를 내는 함수는 is_ 를 보통 사용한다.
    • (ex. is_full( ))
  • 상수는 대문자 변수에 저장한다.
  • 과도한 줄임말을 쓰지 않는다.

2. 함수

  • 함수를 너무 길게 작성하지 않는다.
  • 추상화 수준이 낮은 코드들을 묶어서 추상화 수준을 높게 표현하면 가독성이 올라간다.
    • 디테일한 부분을 숨긴다.
    • 같은 역할을 하는 코드들을 모아 함수로 만든다.
  • 과도하게 중복된 if문은 실수를 발생시킬 수 있기 때문에, 빠르게 if문을 빠져나오는 early return을 사용한다.
  • 주석 없이 이해할 수 있는 코드가 좋은 코드이다.
  • 코드만으로 이해할 수 없을 때 주석을 추가한다.
  • 함수 이름에 너무 여러 역할의 의미를 담지 않도록 한다.
  • 이름에 담기지 않는 역할까지 하면 나중에 헷갈리고, 역할이 많으면 쪼개는 것이 낫다.

추상화

: 목적을 명확히 하여 복잡한 것은 숨기고 핵심만 드러내는 것

  • 추상화 수준이 높다.
    • 김밥 준비하겠습니다.
    • 나 오늘 프로그래밍 공부했어.
    • 스위치 누른다.
  • 추상화 수준이 낮다.
    • 김밥을 말기 위해서 여러 재료들을 준비하고 밥에 밑간을 하겠습니다.
    • 나 오늘 python 반복문에 대해서 공부했어.
    • 접점을 이용하여 전자적 충격을 통해 논리회로로 이용한다.

3. 예외 처리

# try except 사용법
try: 
    arr = [1, 2] 
    print(arr[3]) 
    4 / 0 
except IndexError as e: 
    print('index error 발생', e) 
except ZeroDivisionError as e: 
    print('zero error 발생', e)

# 예외 발생
def get_video(video, user): 
    if not user.has_licensed(): 
        raise Exception("사용권이 필요합니다.") 
    return get_video_contents(video)
  • 예외 처리를 통해 어디서 무슨 에러가 발생했는지 알 수 있다.
  • 예외를 일부러 발생시킬 수도 있다.

4. 리팩토링

  • 외부동작을 바꾸지 않으면서 내부 구조를 개선하는 방법으로, sw 시스템을 변경하는 프로세스
  • 보다 이해하기 쉽고, 수정하기 쉽도록 만드는 것, 겉으로 보이는 소프트웨어의 기능을 변경하지 않는 것
  • assert 를 통해서 원하는 결과가 나오지 않을 경우 에러가 뜨도록 한다. 
  • 임시 변수 제거하기
    • 변수가 적을수록 코드를 이해하기 좋다.
    • 임시 변수 : 값이 한 번만 대입되고 바뀌지 않는 변수
    • 리턴 값을 다른 곳에 저장하고 쓰지 말고, 차라리 가져오는 함수를 여러 번 써라.
  • 묶을 수 있는 데이터를 묶는 것이 좋다.
    • 여러 값들을 출력해야할 때, 딕셔너리로 한 번에 관리하면 좋다.
    • 즉 값들을 계산하여 출력 값으로 바로 내보내는 것이 아니라, 딕셔너리라는 중간 저장소를 만드는 것이다.
    • 이를 통해 4.3에서 변수 대신 함수를 쓰면서 길어졌던 코드를 다시 짧아지게 할 수 있다.

 

 

 

 

 

 

Comments