루프에서 컬렉션 클로저 메서드로

1427 단어 리팩토링루비


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

목적



즉시 꺼낼 수 있도록

기본 작업 사이클


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

  • 루프에서 컬렉션 클로저 메서드로(Replace Loop with Collection Clousure Method)



    each계의 처리를 map계의 처리로 하는 것
    블록 내에서의 루프 처리의 기술로부터, 메소드 체인을 실현 가능한 기법으로 하는 것

    포인트


  • Ruby 특유의 리팩토링이라고도 할 수 있습니다
  • 반복 처리 된 결과를 반환하려면 루프 외부에서 변수로 전달할 필요가 없습니다.
  • 여러 프로세스가 루프 내에서 수행되는 경우 메서드 체인에서 구현할 수 있습니다.


    fruits = []
    foods.each do |food|
      fruits << food.values_at(
        :apple, :orange
      )
    end
    

      ↓
    fruits = foods.map {|food|
      food.values_at(
        :apple, :orange
      )
    }
    

    책 정보



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

    잡감



    체인이 너무 길면 알기 쉽다고는 할 수 없게 되므로, 컬렉션 클로저 단체를 메소드로서 잘라내는 것이 좋을 것 같다
  • 좋은 웹페이지 즐겨찾기