역 방법 리팩토링

2725 단어 rubyrefactoring
다음은 Kent Beck의 Smalltalk Best Practice Patterns을 읽으면서 오늘 배운 편리한 리팩토링 기술입니다.

하지만 먼저 문제가 무엇입니까? 때로는 다른 개체에서 다른 메서드를 호출하기 때문에 읽을 수 없는 메서드가 있습니다. 메서드는 이미 작고(그러나 읽을 수 없음) 한 가지 작업을 수행하기 때문에 메서드를 추출할 수 없습니다.

다음은 간단한 예입니다.

class Point
  def print(stream)
    x.print(stream)
    stream.print(', ')
    y.print(stream)
  end
end


예가 복잡하지는 않지만 진행 상황과 누가 누구에게 전화하는지 이해하는 데 시간이 걸립니다.

모든 메시지가 단일 객체를 통과하도록 함으로써 문제를 해결할 수 있습니다. Kent는 이 리팩토링에 대해 다음 접근 방식을 제공합니다.
  • 매개변수에 메서드를 코딩합니다.
  • 원본 메시지에서 이름을 가져옵니다.
  • 원래 수신기를 새 메서드에 대한 매개 변수로 가져옵니다.
  • 원래 메시지를 원래 수신자에게 전송하여 방법을 구현합니다.

  • class Stream
      def print(obj)
        obj.print(self)
      end
    end
    
    class Point
      def print(stream)
        stream.print(x)
        stream.print(', ')
        stream.print(y)
      end
    end
    


    추가 개체를 도입했지만 print 메서드는 이제 읽고 이해하기 쉽습니다.

    어떻게 생각해?

    좋은 웹페이지 즐겨찾기