인수 객체 도입 (Introduce Parameter Object)

1692 단어 리팩토링루비


하나씩 리팩토링 기술 요약
개인적으로 간단하고 도입하기 쉽다고 생각하는 것으로부터

목적



즉시 꺼낼 수 있도록

기본 작업 사이클


  • 시스템을 움직여 사양을 조사
  • 테스트 방법 만들기
  • 테스트 실패 확인
  • 테스트 성공 확인
  • 작은 변경, 수시 테스트 실행 (패턴 추가 실패 확인 -> 성공 확인)
  • 마지막 테스트 실행
  • 마지막 동작 확인

  • 인수 객체 도입(Introduce Parameter Object)이란?



    여러 인수를 하나의 객체로 결합
    인수 정보는 변경하지 않고 숫자를 줄이는 것

    포인트


  • 복수의 인수에 관련성이 있는 것이 자명, 또는 같은 조합으로 건네받고 있는 인수가 있을 때 인수의 정보를 이뮤터블 클래스로서 작성
  • 기존의 메소드에 오브젝트화 한 인수를 추가해, 조금씩 인수를 바꾸어 검증한다
  • 기존의 인수를 삭제할 수 있으면 인수 오브젝트의 클래스에 부채가 있는 메소드를 이동한다


  • class Doraemon
      attr_reader :calorie
    
      def eat(bean_paste, castella) 
        @calorie = bean_paste + castella
      end
    
      def large
        @calorie += 500
      end
    end
    

      ↓
    class Dorayaki
      attr_reader :calorie, :bean_paste, :castella
    
      def initialize(bean_paste, castella)
        @bean_paste = bean_paste
        @castella = castella
      end
    
      def large
        @calorie = @bean_paste + @castella + 500
      end
    end
    
    class Doraemon
      def eat(dorayaki) 
        dorayaki.bean_paste + dorayaki.castella
      end
    end
    

    책 정보



    Jay Fields (저자), Shane Harvie (저자), Martin Fowler (저자), Kent Beck (저자),
    나가오 타카히로 (역), 리팩토링 : Ruby 에디션
    htps : // 아 mz 응. 및 / 2VlyWML

    잡감



    어떤 조합으로 기술을 인식하기 위해 조금씩

    좋은 웹페이지 즐겨찾기