ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 5장 - 가독성 높은 코드를 작성하라
    클린 코드(Clean Code)/좋은 코드, 나쁜 코드 요약 2023. 12. 14. 00:01
    728x90

    어떻게 하면 가독성 높은 코드를 작성할 수 있을까?

    • 서술적인 이름을 지어라
    • 적절한 주석활용
    • 간결하지만 이해하기 어려운 코드를 피하라
    • 스타일 가이드를 채택하고 따르자
    • 깊이 중첩된 코드를 피하자
    • 함수 호출에 사용되는 인수도 가독성이 있어야 한다.
    • 매직 넘버를 활용하지 말자
    • 언어의 새로운 기능을 활용해보자

     

    서술적인 이름을 지어라

    예를 들어 토스터라는 부엌에 있는 가전제품에 이름을 지을 때 객체 A라고 아무렇게나 이름을 짓는 대신 무엇가를 굽는다는 뜻인 "토스터"라고 이름을 짓듯이 소프트웨어에서도 같은 원리를 적용해야 합니다.

     

    이름을 지을 때는 최대한 변수, 함수 및 클래스가 별도의 설명할 필요가 없이 자명하면 제일 좋습니다.

     

    적절한 주석활용

    대부분의 경우에는 무분별한 주석대신에 이름을 효과적으로 짓는것이 더 좋습니다.

    하지만 제품 또는 비즈니스 의사 결정 또는 이상하고 명확하지 않은 버그에 대한 해결책 등에는 주석이 효과적인 해결책이 될 수 있습니다.

     

    간결하지만 이해하기 어려운 코드를 피하라

    간혹가다가 알고리즘등을 풀다 보면 python으로 한 줄 코딩으로 문제를 해결하는 경우도 종종 있지만 이런 경우에 코드를 이해하기 힘든 경우가 있을 수 있습니다.

    무작정 코드라인이 짧다고 좋은것은 아니고 더 많은 줄이 필요하더라도 가독성 높은 코드를 작성하는 것이 좋을 수도 있습니다.

     

    스타일 가이드를 채택하고 따르자

    누구는 camelCase 누구는 PascalCase로 코드를 작성할 수 있습니다.

    팀에 스타일 가이드가 없다면 구글의 스타일 가이드를 따라도 되고 linter와 같은 도구를 활용해서 스타일 가이드를 지정해 보아도 좋습니다.

     

    깊이 중첩된 코드를 피하자

    if else 그 안에 if else 그 안에 for문 그 안에 if else 등으로 중첩된 depth가 쌓여가면 코드는 점점 읽기 어려워질 수 있습니다.

    계속 if-else 안의 논리를 추적해야하며 값이 어떤 상태로 변경된는지, 반환되는지 파악하기 위해 인지과부하에 걸리기 때문입니다.

     

    elary return등의 방식을 활용하거나 더 작은 함수단위로 분리하여 중첩된 깊이를 피해볼 수 있습니다.

     

     

    함수 호출에 사용되는 인수도 가독성이 있어야 한다.

    sendMessage("hello", 1, true);

     

    1과 true가 어떤 것을 의미하는지 알기 위해서는 함수의 정의로 들어가서 각 인수가 어떤 것을 의미하는지 파악해야 합니다.

    대안으로는 언어차원에서 명명된 매개변수를 지원하는 경우 사용할 수 있습니다.

     

    때로는 value class 등으로 포장하여 new MessagePriority(1), RetryPolicy.ALLOW_RETRY 등으로 매직넘버를 래핑 하는 방법도 있습니다.

     

    매직 넘버를 활용하지 말자

    예를 들어 소스코드에 907.1847에 대한 곱셈이 있다면 이를 이해하기는 어렵습니다.

    대안으로는 KILOGRAMS_PER_US_TON = 907.1847 등을 활용하여 해당 매직넘버가 어떤것을 의미하는지 명확하게 인지할 수 있게 도와주기 때문에 가독성을 높여줍니다.

     

     

    언어의 새로운 기능을 활용해보자

    예를 들어 자바 8에 스트림이 도입되었을 때 이를 통해 반복문을 간결한 함수형 스타일 코드로 작성이 가능해졌습니다.

    이를 통해 코드가 읽기 쉽고 간결해질 수 있습니다.

     

    하지만 다른 개발자들이 스트림에 익숙하지 않다면 사용하지 않는 것이 좋을 수도 있습니다.

    위에서 소개했던 "간결하지만 이해하기 어려운 코드를 피하라" 와는 조금 상충되는 사례입니다.

     

     

     

     

     

    댓글

Designed by Tistory.