리팩토링
-
리팩토링 : Decompose Conditional리팩토링 2012. 12. 7. 09:30
조건 :복잡한 (if - then -else) 조건문을 가지고 있다면 적용 :조건부분, then부분, else부분을 메소드로 뽑아내라. 적용전 if (date.before (SUMMER_START) || date.after(SUMMER_END)) charge = quantity * _winterRate + _winterServiceCharge; else charge = quantity * _summerRate; 적용후 if (notSummer(date)) charge = winterCharge(quantity); else charge = summerCharge (quantity); 참조 :http://www.refactoring.com/catalog/decomposeConditional.html
-
리팩토링 : Convert Static to Dynamic Construction리팩토링 2012. 12. 6. 09:00
리팩토링 책에는 없고 웹사이트에 있는 내용 저자 : Gerard M. Davison 조건 :특정 플랫폼에서만 빌드가능한 클래스가 정적컴파일해야하는 의존성이 있을 때 적용 : 정적 의존성을 해제하기 위해서 java.lang.reflect를 사용하도록 수정할 것. 적용 전 import org.davison.data.jdbc.JDBCProvider; . . . DataProvider dp = new JDBCProvider(); 적용 후 try { DataProvider dp = (DataProvider) Class.forName("org.davison.data.jdbc.JDBCProvider").newInstance(); } catch (IllegalAccessException iae) { // Convert..
-
리팩토링 : Convert Dynamic to Static Construction리팩토링 2012. 12. 5. 09:00
리팩토링 책에는 없는 내용. 리팩토링웹사이트에 있음. 저자 : Gerard M. Davison 조건 :다른 클래스들을 동적으로 로드하는 코드는 보장되지 않은 오버헤드를 발생시키거나 문제발생가능성이 큰 코드를 만들수 있음. 적용 : 동적 클래스 로딩을 정적코드로 변환할 것. 적용전 try { DataProvider dp = (DataProvider) Class.forName("org.davison.data.jdbc.JDBCProvider").newInstance(); } catch (IllegalAccessException iae) { // Convert exception to error to preseve the interface. // throw new IllegalAccessError(iae.getM..
-
리팩토링 : Consolidate Duplicate Conditional Fragments리팩토링 2012. 12. 4. 09:00
조건 :같은 코드가 조건식의 모든 분기에 들어가 있다면 적용 :조건식의 바깥으로 뽑아내라. 적용전 if (isSpecialDeal()) { total = price * 0.95; send(); }else { total = price * 0.98; send(); } 적용후 if (isSpecialDeal()) { total = price * 0.95; }else{ total = price * 0.98; } send(); 참조 :http://www.refactoring.com/catalog/consolidateDuplicateConditionalFragments.html
-
리팩토링 : Consolidate Conditional Expression리팩토링 2012. 12. 3. 09:00
조건 :같은 결과를 내는 조건문이 연속되어 있다면적용 :그것들을 하나의 조건식으로 합쳐서 뽑아내라. 적용전 : double disabilityAmount() { if (_seniority 12) return 0; if (_isPartTime) return 0; // compute the disability amount } 적용후 : double disabilityAmount() { if (isNotEligableForDisability()) return 0; // compute the disability amount } 참조 :http://www.refactoring.com/catalog/consolidateConditionalExpres..