반응형
[클린코드] 35일차/36일차 - JUnit 들여다보기
클린코드 35일차 (p. 324 ~ 332 (13장) )
15장 JUnit 들여다보기
JUnit은 켄트 벡과 에릭 감마가 비행기를 타고 가다 만들었다고 한다..!
ComparisonCompacterTest.java 라는 모듈을 살펴보자
문자열 비교 오류를 파악할 때 유용한 코드이다.
예를 들어, ABCDE와 ABXDE를 받으면 <…B[X]D…>를 반환한다.
package junit.framework;
public class ComparisonCompactor {
private static final String ELLIPSIS = "...";
private static final String DELTA_END = "]";
private static final String DELTA_START = "[";
private int fContextLength;
private String fExpected;
private String fActual;
private int fPrefix;
private int fSuffix;
...
}
긴 표현식 몇 개와 f로 시작하는 것이 보기 싫다.. 그리고 변수 이름에 범위를 명시할 필요가 없으므로 중복되는 정보는 삭제한다.
private int contextLength;
private String expected;
private String actual;
private int prefix;
private int suffix
JUnit 프레임워크 코드 평가하기
의도를 명확히 표현하려면 조건문을 캡슐화해야 한다. 즉, 조건문을 메서드로 뽑아내 적절한 이름을 붙인다.
부정문은 긍정문보다 이해하기 약간 더 어렵다. 그러므로 if를 긍정으로 만든다.
함수 이름을 잘 짓는다. 인수까지 고려한다.
모듈은 일련의 분석 함수와 일련의 조합 함수로 나뉜다.
전체 함수는 위상적으로 정렬한다. 각 함수가 사용된 직후에 정의된다. 분석 함수가 먼저 나오고 조합 함수가 그 뒤를 이어서 나온다.
결론
우리는 보이스카우트 규칙을 지켰다.
모듈은 처음보다 더욱 깨끗해졌으며, 세상에 개선이 불필요한 모듈은 없다.
코드를 처음보다 조금 더 깨끗하게 만드는 책임은 우리 모두에게 있다.
반응형
'알아두면쓸데있는신기한잡학사전 > 독서일지' 카테고리의 다른 글
[클린코드] 40~43일차 - 냄새와 휴리스틱 (주석/환경/함수/일반) (1) | 2023.12.18 |
---|---|
[클린코드] 37일차/38일차/39일차 - SerialDate 리팩터링 (2) | 2023.12.13 |
[클린코드] 28일차~34일차 - 돌아가는 프로그램에 그치기 보단 점진적 개선 필요 / TDD 유지 (1) | 2023.12.02 |
[클린코드] 25일차/26일차/27일차 - 동시성 (2) | 2023.11.30 |
[클린코드] 24일차 - 창발성은 단순한 설계 규칙으로부터 (1) | 2023.11.19 |