create pom.xml
fitnesses 라이브러리 추가
add characterization test
- PrintPrimes.main을 수행시켜 화면에 출력된 결과를 gold 파일로 저장하고 setUp에서 System.out을 lead라는 파일로 치환
- gold와 lead 파일의 내용을 비교
PrintPrimesTest - add failing test for main method
create PrintPrimes
create PrintPrimes
FileContentComparator - add class
rename should_print_result();
rename gold.txt to gold
add characterization test
- PrintPrimes.main을 수행시켜 화면에 출력된 결과를 lead 파일로 저
장
- setUp에서 System.out을 lead로 치환
- gold와 lead 파일 내용을 비교
modify artifactId
extract method object - PrimePrintHelper
- 일렬의 변수들을 갖는 큰 하나의 함수이다.
- 이런 경우 하나 이상의 클래스가 숨어 있는 것이다.
- PrimePrinterHelper는 적합한 이름이 아니다.
- 후에 코드를 정제하면 더 적합한 이름을 떠 오를 것이다. 그때 변경하자.
remove static
- static/singletone은 global변수와 같다.
- 의존성 관리가 어렵다.
extract filed
- code block을 extract method로 추출하여 함수를 작게 만들기 전에 함수에 여러곳에서 사용되는 변수들을 필드로 추출한다.
- 추출된 메소드들의 parameter 개수를 최소화할 수 있고 코드 블록을 메소드로 추출시 2개 이상의 변수가 변경되어 IDE에 의한 자동 추출이 안되는 것을 방지할 수 있다.
- 후에 필드로 존재할 필요가 없으면 로컬 변수로 변경할 수 있다.
extract method - printNumbers
- prime number를 계산하는 부분과 이쁘게 리포트를 출력하는 부분으로 나뉜다.
change signature printNumbers - add primes, numberOfPrimes as parameters
- 생성된 소수들을 출력하는 printNumbers가 호출될때마다 변경될 수 있는 primes(생성된 소수) numberOfPrimes(생성된 소수의 개수)는 파라미터로 처리한다.

- IDE의 extract parameter를 이용한다. 추출할 때 "Replace all occurrences" 옵션을 선택하여 모든 경우에 적용되도록 한다.
rename parameter primes to numbers
- printNumbers에 전달되는 파라미터이니 numbers가 보다 적절한 이름이다.
change invoke to return prime numbers
- invoke 메소드를 void에서 int[] primes로 변경한다.
- invoke에서 printNumbers를 호출하지 말고 클라이언트<main()>에서 printNumbers를 호출하도록 변경한다.
* 소수 생성과 소수 출력은 다른 책임이니
change invoke to return prime numbers
- invoke 메소드를 void에서 int[] primes로 변경한다.
- invoke에서 printNumbers를 호출하지 말고 클라이언트<main()>에서 printNumbers를 호출하도록 변경한다.
* 소수 생성과 소수 출력은 다른 책임이니
prepare extract method object
- linesPerPage, colums는 printNumbers에서만 사용된다.
- 이 필드들은 후에 printNumbers가 별도의 클래스로 추출되면 PrimePrinterHelper에 있을 필요가 없다.
그렇기 때문에 이 필드들은 PrintPrimes로 이동시킨다.