본문 바로가기
백엔드/Java

자바 리팩토링 1탄

by david100gom 2020. 9. 20.

 

메서드 정리

  • Extract Method
    • 그룹으로 함께 묶을 수 있는 코드 조각이 있으면, 코드의 목적이 잘 드러나도록 메소드의 이름을 지어 별도의 메소드로 뽑아낸다.
  • Inline Method
    • 메소드 몸체가 메소드의 이름 만큼이나 명확할때는, 호출하는 곳에 메소드의 몸체를 넣고, 메소드를 삭제하라
  • Inline Temp
    • 간단한 수식의 결과값을 가지는 임시변수가 있고, 그 임시변수가 다른 리팩토링을 하는데 방해가 된다면, 이 임시변수를 참조하는 부분을 원래의 수식으로 바꾸라
  • Replace Temp with Query
    • 어떤 수식의 결과값을 저장하기 위해서 임시변수를 사용하고 있다면, 수시을 뽑아내서 메소드로 만들고, 임시변수를 참조하는 곳을 찾아 메소드 호출로 바꾼다. 새로 만든 메소드는 다른 메소드에서도 사용될 수 있다.
  • Introduce Explaining Variable
    • 복잡한 수식이 있는 경우에는, 수식의 결과나 또는 수식의 일부에 자신의 목적을 잘 설명하는 이름으로 임시변수를 사용하라.
  • Split Temporary Variable
    • 루프 안에 있는 변수나 collecting temporary variable (수집하는 임시변수) 도 아닌 임수변수에 값을 여러번 대입하는 경우에는, 각각의 대입에 대해서 따로따로 임시변수를 만들어라
  • Remove Assignments to Parameters
    • 파라미터에 값을 대입하는 코드가 있으면, 대신 임시변수를 사용하도록 하라
  • Replace Method with Method Object
    • 긴 메소드가 있는데, 지역변수 때문에 Extract Method 를 적용할 수 없는 경우에는, 메소드를 그 자신을 위한 객체로 바꿔서 모든 지역변수가 그 객체의 필드가 되록 한다. 이렇게 하면 메소드를 같은 객체 안의 여러 메소드로 분해할 수 있다.
  • Substitue Algorithm
    • 알고리즘을 보다 명확한 것으로 바꾸고 싶을 때는, 메소드의 몸체를 새로운 알고리즘으로 바꾼다.

 

댓글