클린 코드는 개발자 커뮤니티에서의 `최고의 실천 방법`(Best Practices) 중 하나로 여겨지며,
소프트웨어 개발 과정에서 가독성, 유지보수성, 생산성 등의 측면에서 큰 장점을 제공합니다.

image from: firefly.adobe.com

  1. 가독성: 클린 코드는 읽기 쉽고 이해 용이
    1. 코드의 의도와 동작을 쉽게 파악 가능
    2. 가독성이 높은 코드는 코드 리뷰, 유지보수, 버그 수정 등의 작업 효율성 극대화
  2. 유지보수성: 클린 코드는 유지보수 쉬움
    1. 코드의 구조가 명확하고 일관성이 있기 때문에 새로운 기능을 추가하거나 버그를 수정하는 작업이 간단
    2. 코드의 중복을 제거하고 모듈화하여 변경 사항에 대한 영향을 최소화 가능
  3. 버그 감소: 클린 코드는 버그가 발생하기 어려운 구조
    1. 작은 함수와 모듈을 사용하면 코드의 일부분만 수정해도 되므로 다른 부분에 영향을 미치는 버그 감소
    2. 명확한 변수명과 주석을 통해 개발자는 코드를 더 정확하게 이해하고 버그 예방 가능
  4. 생산성 향상: 코드를 이해하고 수정하는 데 소요되는 시간 감소
    1. 가독성이 높은 코드는 협업을 향상
    2. 다른 개발자와의 코드 공유와 리뷰가 원활하게 진행
    3. 개발자의 생산성을 향상시키고 프로젝트의 진행 속도 안정화
  5. 테스트 용이성: 클린 코드는 테스트 최적화 됨
    1. 작은 함수와 모듈은 단위 테스트를 작성하기에 이상적
    2. 테스트 가능한 코드는 버그를 발견하고 수정하는 데 도움을 주며 소프트웨어의 품질을 향상

 

예를 들면 다음과 같습니다.

✅Good

def calculate_total_price(items):
    total_price = 0
    for item in items:
        total_price += item.price * item.quantity
    return total_price

 

🚫Bad

def calc(items):
    tp = 0
    for i in items:
        tp += i.p * i.q
    return tp

가독성: 첫 번째 예제는 변수와 함수의 이름이 명확하게 지어져 있어 코드를 읽기 쉽고 이해하기 쉽습니다.
변수명인 total_price, item.price, item.quantity는 코드의 의도를 명확하게 전달합니다.
두 번째 예제의 경우, 약어와 알파벳 하나로 이루어진 변수명인 tp, i.p, i.q는 코드의 의미를 이해하기 어렵게 만듭니다.

유지보수성: 첫 번째 예제는 구조가 명확하고 일관성이 있습니다. 
calculate_total_price 함수는 단일 기능을 수행하며, 변수명과 주석을 통해 코드의 동작을 명확히 설명합니다. 이는 새로운 기능 추가 또는 수정 시 코드의 변경 범위를 최소화하고 유지보수를 쉽게 만듭니다. 
반면, 두 번째 예제는 변수명이 알기 어려우며 함수의 목적과 동작을 파악하기 어려워 야근을 겪을 수 있습니다.

버그 감소: 첫 번째 예제는 변수와 함수의 이름을 명확하게 지어 코드를 이해하기 쉽게 만듭니다. 
따라서 코드를 더 정확하게 이해하고 버그를 예방하는 데 도움이 됩니다.
두 번째 예제는 변수명이 약어로 되어 있고, 코드의 의도가 분명하지 않기 때문에 버그 발생 가능성이 높아집니다.

script from: chatgpt

 

 

물론 이런 방법도 있습니다.

평생 개발자로 먹고 살 수 있다 free pdf

https://m.hanbit.co.kr/store/books/book_view.html?p_code=E2375873090 

 

유지보수하기 어렵게 코딩하는 방법: 평생 개발자로 먹고 살 수 있다

이 책은 코드를 이해하기 어렵게 작성하는 방법을 설명한다. 다른 사람들이 쉽게 이해할 수 없도록 코드를 작성하여, 유지보수를 어렵게 하고 자신의 가치를 유지하도록 도와준다. 반대로 도서

m.hanbit.co.kr

 

주변에 좋은 코드가 있어서 오픈 소스를 하라고 하면, 대체로 코드 정리 좀 하겠다는 말을 많이 합니다.

일단 돌아가게 만드는 것에 중심을 두어서겠죠.

오픈 소스는 클린하지 않아도 된다고 생각합니다. 누군가 코드를 잘 정리해 줄 수도 있으니까요.

코드가 클린하다는 것은 어떤 의미일까요.

가독성이 좋다는 뜻으로 저는 이해합니다.

  • 읽기 쉬운 코드: 코드를 작성할 때 다른 사람이 읽기 쉽도록 작성해야 합니다. 변수와 함수의 이름은 명확하고 직관적이어야 하며, 주석을 사용하여 코드의 의도와 동작을 설명해야 합니다. 코드 블록을 적절하게 들여쓰기하여 구조를 명확하게 표현해야 합니다.
  • 작은 함수와 모듈: 함수는 작고 간단하며 한 가지 기능만 수행해야 합니다. 긴 함수보다는 작은 함수를 작성하는 것이 좋습니다. 모듈은 잘 정의된 기능을 가지고 있어야 하며, 필요한 경우 모듈을 적절히 분리하여 재사용성을 높여야 합니다.
  • 주석의 적절한 사용: 주석은 코드의 동작을 설명하고 의도를 전달하는 데 사용되어야 합니다. 그러나 주석만으로 코드의 이해를 대체하는 것은 좋지 않습니다. 주석은 코드가 이해하기 어려울 때 도움이 되어야 합니다.
  • 일관성 있는 명명 규칙: 변수, 함수, 클래스 등의 명칭에 일관성 있는 규칙을 적용해야 합니다. 명명 규칙은 가독성을 높이고 코드의 이해를 도울 수 있습니다. 개발 팀 내에서 동일한 명명 규칙을 사용하는 것이 좋습니다.
  • 중복 코드의 제거: 중복된 코드는 버그 발생의 원인이 될 수 있으며 유지보수를 어렵게 만듭니다. 중복 코드를 최소화하고 재사용 가능한 함수나 클래스를 작성하여 코드의 일관성을 유지해야 합니다.
  • 테스트 가능한 코드 작성: 코드를 작성할 때 테스트 가능성을 고려해야 합니다. 테스트 케이스를 작성하기 쉬운 코드는 버그를 발견하고 수정하는 데 도움이 됩니다. 모듈화된 코드와 작은 함수를 작성하여 단위 테스트를 수행할 수 있도록 해야 합니다.
  • 주기적인 리팩토링: 코드를 지속적으로 개선하고 리팩토링해야 합니다. 기능을 추가하거나 수정할 때마다 코드를 정리하고 개선하는 습관을 가져야 합니다. 리팩토링을 통해 코드의 가독성, 성능, 유지보수성을 향상시킬 수 있습니다.

클린 코드의 목표는 코드의 가독성과 유지보수성을 높이는 것입니다. 이는 개발자 간의 협업을 촉진하고 프로젝트의 생산성을 향상시킬 수 있습니다.

ai.com 의 클린 코드에 대한 설명입니다.

Clean Code

image from: https://blog.knoldus.com/clean-code-robert-c-martins-way/ , https://biratkirat.medium.com/clean-code-series-i-e1d60fc6d6ec

+ Recent posts