티스토리 뷰
목차
1. 주석을 최대한 쓰지 말자.
2. 좋은 주석
3. 나쁜 주석
4. 주석보다 annotation
5. JavaDoc
1. 주석을 최대한 쓰지 말자.
프로그래밍 언어를 치밀하게 사용해 의도를 표현할 능력이 있다면, 주석은 거의 필요하지 않다.
대부분 주석 없이는 자신을 표현할 방법을 찾지 못해 할 수 없이 주석을 사용한다.
따라서 코드를 깔끔하게 정리하고 표현력을 강화하는 방향으로 에너지를 쏟아야 한다.
코드는 변화하고 진화한다.
주석은 언제나 코드를 따라가지는 않는다.
코드만이 자기가 하는 일을 진실되게 말한다.
따라서 주석을 가능한 줄이도록 꾸준히 노력해야 한다.
1) 주석은 나쁜 코드를 보완하지 못한다.
표현력이 풍부하고 깔끔하면 주석이 거의 없는 코드가
복잡하고 어수선하며 주석이 많이 달린 코드보다 훨씬 좋다.
2) 코드로 의도를 표현하라.
// 직원에게 복지 혜택을 받을 자격이 있는지 검사한다.
if ((employee.flags & HOURLY_FLAG) && (employee.age > 65))
if (employee.isEligibleForFullBenefits())
코드만으로 의도를 분명히 표현할 수 있는 경우라면 주석 대신에 함수를 사용해도 충분하다.
2. 좋은 주석
1) 정보를 제공하는 주석
// kk:mm:ss EEE, MMM dd, yyyy 형식이다.
Pattern timeMatcher = Pattern.compile(
"\\d*:\\d*:\\d* \\w*, \\w* \\d*, \\d*");
정규표현식이 시각과 날짜를 뜻한다고 설명해 구현에 대한 정보를 제공한다.
위와 같은 경우는 클래스를 만들어 함수로 표현하면 주석이 필요 없어진다.
2) 의도를 설명하는 주석
// 스레드를 대량 생성하는 방법으로 어떻게든 경쟁 조건을 만들려 시도한다.
for (int i = 0; i < 25000; i++) {
WidgetBuilderThread widgetBuilderThread =
new WidgetBuilderThread(widgetBuilder, text, parent, failFlag);
Thread thread = new Thread(widgetBuilderThread);
thread.start();
}
3) 중요성을 설명하는 주석
// 문자열에 시작 공백이 있으면 다른 문자열로 인식되기 때문에
// trim 함수로 공백을 제거해야 한다.
String listItemContent = match.group(3).trim();
4) TODO, FIXME 주석
- TODO : 지금은 해결하지 않지만 나중에 해야할 일을 기술
- FIXME : 문제가 있지만 당장 수정할 필요는 없을 때 기술
IDE에서 하이라이팅 되고 별도의 윈도우에서 볼 수 있다.
3. 나쁜 주석
잘못된 정보를 제공하는, 중복 되는 주석은 나쁜 주석이기 떄문에
반듯이 필요한 주석만을 공들여 작성할 필요가 있다.
1) 의무적으로 다는 주석
/**
*
* @param title CD 제목
* @param author CD 저자
* @param tracks CD 트랙 숫자
* @param durationInMinutes CD 길이(단위: 분)
*/
public void addCD(String title, String author,
int tracks, int durationInMinutes) {
CD cd = new CD();
cd.title = title;
cd.author = author;
cd.tracks = tracks;
cd.duration = duration;
cdList.add(cd);
}
모든 함수에 Javadocs를 달거나 모든 변수에 주석을 달면
가독성이 떨어지고 잘못된 정보를 제공할 가능성이 높아진다.
4. 주석보다 annotation
어노테이션을 사용해서 Class, Method, Field에 대한 정보를 보여줄 수 있고 코드의 실행 흐름에 간섭을 줄 수도 있다.
@Deprecated : 컴파일러가 warning을 발생시킨다. 필드나 메소드가 곧 없어짐을 의미하기도 한다.
@NotThreadSafe : Thread Safe하지 않읂을 나타낸다.
@Immutable, @Nullable 등 java.lang.annotation 패키지의 어노테이션들을 사용하면
간단하면서 명료하게 주석보다 큰 효과를 얻을 수 있다.
5. JavaDoc
Java 코드에서 API 문서를 HTML 형식으로 생성해 주는 도구
IDE에서 Reader Mode로 주석 기호를 삭제하고 텍스트만 확인할 수 있다.
1) Class level
2) Method level
3) Field level
출처
Clean Code(클린 코드) 애자일 소프트웨어 장인 정신 - 로버트 C. 마틴 지음
'책 내용 정리 > 클린코드(clean code)' 카테고리의 다른 글
[클린코드] 6. 객체와 자료 구조 (0) | 2022.03.07 |
---|---|
[클린코드] 5. 형식 맞추기 (0) | 2022.03.03 |
[클린코드] 9. 단위 테스트 (0) | 2021.12.14 |
[클린코드] 3. 함수 (0) | 2021.12.01 |
[클린코드] 2. 의미있는 이름 (0) | 2021.11.29 |
- Total
- Today
- Yesterday
- http
- 이벤트 스토밍
- 마이크로서비스 패턴
- 스프링 카프카 컨슈머
- H2
- kafka
- Ubiquitous Language
- MySQL
- clean code
- 학습 테스트
- Spring Boot
- 스프링 예외 추상화
- spring rest docs
- 계층형 아키텍처
- Stream
- Spring Data JPA
- mockito
- Git
- Spring
- java8
- HTTP 헤더
- 육각형 아키텍처
- 트랜잭셔널 아웃박스 패턴
- TDD
- 클린코드
- 도메인 모델링
- 폴링 발행기 패턴
- ATDD
- JPA
- named query
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |