3. Remove Assignments to Parameters 파라미터에 값을 대입하는 코드가 있으면,대신 임시변수를 사용하도록 하라. 동기 파라미터로 넘겨진 객체에 대한 작업은 OK! 파라미터가 완전히 다른 객체를 참조하도록 하는 것에는 반대! 이유 명확하지 않다. 값에 의한 전달(pass by value)와 참조에 의한 전달(pass by reference)를 혼동하기 때문
4. Remove Assignments to Parameters 파라미터에 값을 대입하는 코드가 있으면,대신 임시변수를 사용하도록 하라. 따라서 파라미터는전달된 그대로 쓰는 것이 훨씬 명확하며 일관적인 사용법이다. 파라미터에값을 대입해서는 안되고 이런 코드를 보면 Remove Assignments to Parameters 를 사용하여 제거하자
5. Remove Assignments to Parameters 파라미터에 값을 대입하는 코드가 있으면,대신 임시변수를 사용하도록 하라. 절차 파라미터를 위한 임시 변수를 만든다. 파라미터에 값을 대입한 코드 이후에서 파라미터에 대한 참조를 임시변수로 바꾼다. 파라미터에 대입하는 값을 임시변수에 대입한다 컴파일과 테스트.
6. Remove Assignments to Parameters 파라미터에 값을 대입하는 코드가 있으면,대신 임시변수를 사용하도록 하라. 주의 참조에 의한 호출일 경우(call by reference)인 경우 메소드 호출 부분에서 파라미터가 계속 사용되는지 살펴보라. 또한 거기에 얼마나 많은 참조에 의한 호출파라미터에 값이 대입되고 사용되는지도 본다. 리턴값으로하나의 값을 넘길 수 있도록 하라. 만약 하나 이상 있다면 데이터 덩어리를 객체로 만들 수 있는지, 또는 별도의 메소드로 만들 수 있는지 보라.-> Replace Method with Method Object(163) 활용.
7. Remove Assignments to Parameters 파라미터에 값을 대입하는 코드가 있으면,대신 임시변수를 사용하도록 하라. 예제 2 파라미터를Final로 선언하여 관례를 따르도록 강제할 수도 있다. 하지만 실제로 저자는 파라미터에final 쓰지 않는다. 짧은 메소드에 대해서는 코드를 명확하게 하는데 별로 큰 도움이 안된다. 하지만 메소드가길 경우 다른 코드가 파라미터를 변경하는지 보기 위해서는 쓰기도 한다.
8. Remove Assignments to Parameters 파라미터에 값을 대입하는 코드가 있으면,대신 임시변수를 사용하도록 하라. 자바에서 값에 의한 전달(Pass By Value) 자바는 엄격하게 모든 경우에 값에 의한 전달을 사용
9. Remove Assignments to Parameters 파라미터에 값을 대입하는 코드가 있으면,대신 임시변수를 사용하도록 하라. 자바에서 값에 의한 전달(Pass By Value) 본질적으로 객체 참조가 값으로 넘겨진다. 객체의 속성을 변경하는 것은 가능 파라미터에 다른 값을 대입하는 것은 고려안함
10. ReplaceMethod with Method Object 지역변수 때문에 Extract Method를 적용할 수 없는 긴 메소드의 경우 메소드를 그 자신을 위한 객체로 바꿔 모든 지역변수가 그 객체의 필드가 되도록 한다. 이렇게 하면 메소드를 같은 객체 안의 여러 메소드로 분해할 수 있다. 한줄 요약 메소드를(메소드에 있는 모든 지역 변수를 담는)객체로 바꿔라.
11. ReplaceMethod with Method Object 메소드를(메소드에 있는 모든 지역 변수를 담는) 객체로 바꿔라. 동기 작은 메소드의 아름다움 강조. 많은 지역 변수는 메소드를 분해할 때 어려움을 준다 이런 경우 Replace Method with Method Object를 사용하여 이런 모든 지역변수를 메소드 객체로 바꾸어 버린다.그 다음 새로 만들어진 객체를 Extract Method를 이용하여 원래의 메소드로 분해할 수 있다.
12. ReplaceMethod with Method Object 메소드를(메소드에 있는 모든 지역 변수를 담는) 객체로 바꿔라. 절차 메소드의 이름을 따 새로운 클래스 생성. 새로운 클래스에 Final 필드로 원래 메소드의 객체를 저장 메소드에서 사용되는 임시변수와 파라미터를 위한 필드 생성 새로운 클래스의 생성자에서 소스객체와 파라미터를 취함. 새로운 클래스에 Compute라는 이름의 메소드를 만들어준다.
13. ReplaceMethod with Method Object 메소드를(메소드에 있는 모든 지역 변수를 담는) 객체로 바꿔라. 절차 원래의 메소드를Compute에 복사. 원래의 객체에 있는 메소드를 사용하는 경우에는 소스 객체 필드를 사용하도록 바꿈. 컴파일 새로운 클래스의 객체를 만들고 원래의 메소드를새로만든 객체의 Compute메소드를 호출하도록 바꿈. 이제 Extract Method를 사용하여 마음대로 Refactoring.