목록스프링프레임워크공부중/1부 템플릿 패턴 따라잡기 (5)
올해는 머신러닝이다.
마지막소스 첨부는 자 이제 마지막 리팩토링이네영.. 책에선 제네릭을 이용한 다양한 형태로의 변환이 되는 자유로운 팩토링을 보였는데 정말 새롭고 유용한 방법인것 같아서 강추!! 암튼 소스는 다음과 같습니다.. 만약 String값을 이용해서 덧붙이는 기능을 사용하고자 할때에는 이런식으로 바꿔주면 되는군요. 우선 Test해볼 메소드입니다.(여기서 파일안에 있는 숫자를 순서대로 덧붙이는 메소드입니다) @Test public void concatenateOfNumber() throws IOException{ String concateStr = calculator.concatenateString(filepath); assertThat(concateStr,is("1243")); } public class Calcul..
3단계에서 보면 calc()랑 multiply()부분에서 while문에서 가져오는 부분이 중복된다는 걸 볼수 있다. 이걸 템플릿/콜백 패턴으로 중복 제거하면(어디까지 갈것인가..두둥..==ㅣ) public class Calculator { public Integer lineReadTempleter(String filepath,LineCallback callback,int initVal) throws IOException{ BufferedReader br = null; try { br = new BufferedReader(new FileReader(filepath)); String line = null; Integer res = initVal; while( (line = br.readLine()) != n..
템플릿/콜백 패턴은 간단한 정의로는 중복되는 코드들을 인터페이스등을 통한 추출로 인하여 코드의 간결함과 효율성을 높이는 데 있다고 한다. 여기 예제에서는 파일입출력시 try/catch/finally등 자원반납에 관해서 모든 메소드가 중복되고 있다. 그래서 그 부분을 빼고자 하는 것이다. 암튼 적용한 다음의 소스는 다음과 같다. (참고 : @Before는 junit실행시 서론, @Test는 본론, @after는 결론) JUnit는 main메소드가 없어도 테스트를 실행함..^^ CalcSumTest.java public class CalcSumTest { Calculator calculator; String filepath; @Before public void setUp(){ calculator = new ..
package springbook.learningtest.template; import java.io.BufferedReader; import java.io.FileReader; import java.io.IOException; public class Calculator { public Integer calcSum(String filepath) { BufferedReader br = null; int sum = 0; try { br = new BufferedReader(new FileReader(filepath)); String line = null; while( (line=br.readLine())!=null ){ sum += Integer.parseInt(line); } br.close(); } ca..
출처 : 1400페이지짜리 '토비의 스프링' 서적 간단한 파일 입출력 리펙토링 과정을 보여준다. 우선 기본적으로 알아야 하는 건 JUnit 방법이다.. 검색해보면 금방 알수 있으므로 해보삼^^ 실제 계산하는 Calculator.java package springbook.learningtest.template; import java.io.BufferedReader; import java.io.FileReader; import java.io.IOException; public class Calculator { public Integer calcSum(String filepath) throws IOException{ BufferedReader br = new BufferedReader(new FileReade..