Skip to main content

김시용

1. 📌 핵심 개념 정리

✅ 요약하기

  1. 주석은 나쁜 코드를 보완하지 못한다.
    나쁜 코드에 주석을 달지마라. 코드를 다시 짜라

  1. 주석은 최대한 자제하기
    주석으로 설명한 부분 함수로 만들어 표현 가능한지 살펴보기
    • 주석으로 설명하는 부분 (개선 전)
    if ((employee.flags & HOURLY_FLAG) && (employee.age > 65))
    
    • 함수로 표현한 부분 (개선 후)
    if(employee.isEligibleForFullBenefits())
    

  1. 좋은 주석
    • 정보를 제공하는 주석 (반환값 설명, 형식 등)
    • 의도를 설명하는 주석 (저자가 문제를 해결한 방식 부분 - 저자의 의도)
    • 결과를 경고하는 주석 (수행 시간이 긴 부분)
    • TODO 주석 (해야할 작업 나타냄 - 당장 구현 어려운 부분, 누군가에게 요청할 사항 등)
    • 중요성을 강조하는 주석 (빼먹으면 안되는 부분)
    • Javadocs (너무 남용하면 안됨)

  1. 나쁜 주석
    • 중복하는 주석 (함수 및 변수 이름 등으로 충분히 파악 가능한 내용을 설명 ex. 모든 component에 달린 Javadocs 주석)
    • 오해할 여지가 있는 주석 (매 상황에 엄밀한 주석을 달지 못하므로)
    • 의무적으로 다는 주석 (과도한 Javadocs 주석)
    • 주석으로 처리한 코드 (존재의 이유를 모름 -> 중요한건가? -> 다른 사람들이 지우기 주저함)
    • HTML주석 (IDE에서조차 읽기가 어려움)
    • 비공개 코드에서 Javadocs (배포용이 아닌 시스템 내부에 속한 클래스와 함수에는 Javadocs 생성할 필요 없음)

2. 🤔 이해가 어려운 부분

🔍 질문하기

  1. 오해할 여지가 있는 주석
    • 어려웠던 부분
      // this.closed가 true일 때 반환되는 유틸리티 메서드다.
      this.closed가 true로 변하는 순간에 메서드는 반환되지 않는다.
      this.closed가 true여야 메서드가 반환된다.
      해당 예제로 나왔던 위에 적은 코드 설명과 주석 설명이 이해가 잘 안됨
    • 궁금한 점
       // this.closed가 true일 때 반환되는 유틸리티 메서드다.
       // 타임아웃에 도달하면 예외를 던진다.
       public synchronized void waitForCloase(final long timeoutMillis) throws Exception {
          if(!closed)
          {
            wait(timeoutMillis);
            if(!closed)
              throw new Exception("MockResponseSender could not be closed");
          }
      }
      

  1. Javadocs 주석
    • 어려웠던 부분
      어느 정도로 달아야 하는가? 평소 프롬프트 요청을 통해 추가한 Javadocs 주석 정도는 괜찮은가?
    • 궁금한 점
      적절한 함수명과 변수명 선정으로 코드를 읽으면 해당 함수의 기능을 파악할 수 있지만 Javadocs 주석이 해당 함수의 기능을 더 깔끔하게 설명하는 경우가 있는데 이러한 경우는 주석을 달아도 되는가?

3. 📚 참고 사항

에라스토테네스의 체 알고리즘
소수를 효율적으로 찾는 알고리즘으로, 특정 범위 내에서 소수를 빠르게 판별하는데 사용
이 알고리즘은 배수를 제거하는 방식으로 시간 복잡도는 O(NlogN)

  • 알고리즘 동작 과정
  1. 2부터 N까지의 모든 정수를 포함하는 배열을 만든다.
  2. 2부터 시작하여 남아 있는 수 중에서 가장 작은 수를 소수로 판별한다.
  3. 그 소수의 배수들을 모두 제거한다.
  4. 다음으로 남아 있는 가장 작은 수를 선택하고 3번 과정을 반복한다.
  5. N의 제곱근(√N)까지만 반복하면 된다.
    ∵ 두 약수가 모두 √N 보다 클 수는 없기때문에