ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 클린 코드 - 주석
    클린 코드(Clean Code) 2022. 1. 21. 00:01
    728x90

    주석이란 무엇일까?

    주석 또는 코멘트는 프로그래밍에 있어 소스 코드를 더 쉽게 이해할 수 있게 만드는 것이 주목적으로 내용을 메모하는 것입니다.

     

    하지만 부정확한 주석은 아예 없는 주석보다 훨씬 나쁘게 작용하며 일반적으로 주석을 추가하는 경우는 우리의 코드로 의도를 표현하지 못해 실패를 만회하기 위해 주석을 사용합니다.

     

    1. 주석은 거짓말을 많이 한다.

    프로그래머들이 코드를 변화시키고 진화시키는 과정들 사이에서 주석이 언제나 같이 변화하고 진행하는 것이 아니라 코드에서 점점 분리되는 사례가 너무 흔하게 발생합니다.

     

     

    2. 주석보다는 코드를 먼저 정리해보자

    주석을 추가하는 일반적인 이유는 코드 품질이 나쁘기 때문입니다.

    지저분한 모듈에 주석을 달기보다는 가독성이 높은 코드로 만드는 것이 좋습니다.

     

    3. 의미 있다고 생각하는 주석

    법적인 주석

    회사가 정립한 규현 표준에 맞춰 법적인 이유로 주석을 넣어야 하는 경우

    저작권 정보, 소유권 정보 등을 표기하는 주석

     

    의도를 설명하는 주석

    결정에 깔린 의도를 설명하는 주석

    문제를 해결하는 방식에는 여러 가지가 있을 수 있다.

    그 해결 방식 중 일반적이지 않은 흥미로운 방식으로 해결하였다면 저자의 의도를 분명히 드러낼 수 있습니다.

     

    의미를 명료하게 밝히는 주석

    일반적으로 인수나 반환 값 자체를 명확하게 만들면 더 좋겠지만, 인수나 반환 값이 표준 라이브러리나 변경하지 못하는 코드에 속한다면 의미를 명료하게 밝히는 주석을 사용하는 것이 유용합니다.

     

    compareTo() 함수의 경우에는 두 개의 값을 비교하여 int 값으로 반환하는 함수입니다.

    숫자의 비교의 경우에 1은 크다 , 2는 같다,  -1은 작다의 관한 결과를 리턴해줍니다.

     

    따라서 숫자의 의미를 명료하게 밝히는 주석을 사용하면 유용합니다.

    assertTrue(a.compareTo(b) ==0 ); //  a == b
    
    assertTrue(a.compareTo(b) == -1 ); //  a < b
    
    assertTrue(a.compareTo(b) == 1 ); //  a > b

    하지만 주석이 올바른지 검증해야 하므로 의미가 있는 주석인 동시에 위험할 수도 있습니다.

     

    결과를 경고하는 주석

    다른 프로그래머에게 결과를 경고할 목적으로 주석을 사용합니다.

    예를 들어 특정 테스트 케이스가 시간이 오래 걸린다면 "//여유 시간이 충분하지 않다면 실행하지 마십시오"라는 경고의 주석을 남길 수 있습니다.

     

    TODO 주석

    앞으로 해야 할 일을 TODO주석으로 남겨두면 좋습니다.

    TODO 주석은 프로그래머가 필요하다 여기지만 당장 구현하기 어려운 업무를 기술합니다.

    또한 더 이상 필요 없는 기능을 삭제하라는 알림, 누군가에게 문제를 봐달라는 요청, 앞으로 발생할 이벤트에 맞춰 코드를 고치라는 주의 등에 유용합니다.

    하지만 주기적으로 TODO 주석을 점검하여 없어도 괜찮은 주석은 제거하는 것이 좋습니다.

     

    중요성을 강조하는 주석

    자칫 대수롭지 않다고 여겨질 뭔가의 중요성을 강조하기 위해서도 주석을 사용한다.

    책에서는 trim()이라는 문자열의 공백을 제거해주는 함수를 예로 들며 아래와 같은 주석을 남겼습니다.

    //trim 함수는 문자열에서 시작 공백을 제거한다.

    //문자열에 시작 공백이 있으면 다른 문자열로 인식되기 때문이다.

     

     

     

     

     

    출처

    클린 코드 로버트 C. 마틴 지음

    댓글

Designed by Tistory.