리팩토링 3

[리팩토링 refactoring] Composing methods 메소드 구성 - Remove assignments to parameters 매개 변수에 대한 할당 제거

▪Remove assignments to parameters 매개변수에 대한 할당 제거 Problem어떤 값이 메소드 몸체 안에 파라미터 값으로 할당되어졌을 때 - JAVA int discount(int inputVal, int quantity) {if (inputVal > 50) {inputVal -= 2;}//...} Solutionint discount(int inputVal, int quantity) {int result = inputVal;if (inputVal > 50) {result -= 2;}//...}대신 임시 변수를 사용한다.이 리팩토링은 로컬변수를 다루는게 아니라 파라미터를 다루고 있다.만약 파라미터가 매개변수 참조를 통해 전달되는 경우, 파라미터 값이 이 메소드 안에 변경된 후, 이..

[리팩토링 refactoring] Composing Method 메소드 구성

▶Composing methods 메소드 구성 대부분의 리팩토링은 올바르게 메소드를 구성하는데 사용된다. 대부분의 경우, 지나치게 긴 메소드는 모든 악의 근원이다. 이러한 메소드 내부의 코드의 모호성 때문에 실행 로직이 숨겨지고 메소드를 이해하기 매우 어렵다. 메소드 구성 리팩토링 기술은 메소드를 간소화 하고 코드 중복을 제거하여 향후 개선을 위한 길을 열어준다. Composing Methods 메소드구성- Extract Method- Inline Method 즉시처리하는 메소드- Extract Variable- Inline Temp- Replace Temp with Query- Split Temporary Variable- Remove Assignments to Parameters 매개변수에 대한 할당..

[리팩토링 refactoring] Composing methods 메소드 구성 - Inline Method 즉시 처리하는 메소드

▪inline Method 즉시 처리하는 메소드 Problem java메소드 몸체가 메소드의 이름 만큼이나 명확할 때 사용한다.class PizzaDelivery { //... int getRating() { return moreThanFiveLateDeliveries() ? 2 : 1; } boolean moreThanFiveLateDeliveries() { return numberOfLateDeliveries > 5; }} Solution해당 본문을메소드를 호출하는 호출자안으로 옮기고 메소드를 삭제한다.int getRating(){ return (_numberOfLateDeliveries > 5) ? 2 : 1;}인디렉션이 도움이 되기는 하지만, 필요 없는 인디렉션은 짜증나게 한다.또한, Inline..