리팩토링
-
리팩토링 : Introduce Foreign Method리팩토링 2013. 1. 1. 10:00
조건사용중인 서버 클래스에서 추가 메소드가 필요하지만 클래스를 직접 수정할 수 없다면 적용해당 서버 클래스의 인스턴스를 첫번째 인자로 가지는 메소드를 클라이언트 클래스에 만드시오. 적용전 Date newStart = new Date (previousEnd.getYear(), previousEnd.getMonth(), previousEnd.getDate() + 1); 적용후 Date newStart = nextDay(previousEnd); private static Date nextDay(Date arg) { return new Date (arg.getYear(),arg.getMonth(), arg.getDate() + 1); } 참조http://www.refactoring.com/catalog/intr..
-
리팩토링 : Introduce Explaining Variable리팩토링 2012. 12. 31. 09:00
조건복잡한 조건식이 있다면 적용조건식의 결과나 일부를 그 조건의 목적을 표현하는 임시변수에 입력해서 사용하시오. 적용전 if ( (platform.toUpperCase().indexOf("MAC") > -1) && (browser.toUpperCase().indexOf("IE") > -1) && wasInitialized() && resize > 0 ) { // do something } 적용후 final boolean isMacOs = platform.toUpperCase().indexOf("MAC") > -1; final boolean isIEBrowser = browser.toUpperCase().indexOf("IE") > -1; final boolean wasResized = resize > 0..
-
리팩토링 : Introduce Assertion리팩토링 2012. 12. 29. 09:00
조건특정부분의 코드가 프로그램의 상태에 관한 가정을 하고 있다면 적용그 가정을 명확한 Assert의 형태로 변경하시오. 적용전 double getExpenseLimit() { // should have either expense limit or a primary project return (_expenseLimit != NULL_EXPENSE) ? _expenseLimit: _primaryProject.getMemberExpenseLimit(); } 적용후 double getExpenseLimit() { Assert.isTrue (_expenseLimit != NULL_EXPENSE || _primaryProject != null); return (_expenseLimit != NULL_EXPENSE) ..