메서드 추출(Extract Method)
하나씩 리팩토링 기술 요약
개인적으로 간단하고 도입하기 쉽다고 생각하는 것으로부터
목적
즉시 꺼낼 수 있도록
기본 작업 사이클
메소드 추출(Extract Method)이란?
코드 조각을 메소드로 사용하고 목적을 설명하는 메소드 이름으로 지정
포인트
주석은 종종 추출 할 수있는 방법을 식별하는 데 사용할 수 있습니다
주석 자체가 메소드 이름의 후보가됩니다
예
주석은 종종 추출 할 수있는 방법을 식별하는 데 사용할 수 있습니다
주석 자체가 메소드 이름의 후보가됩니다
def scraiping
# ログインする
driver.navigate.to('https://サイト')
driver.find_element(:id, 'id').send_keys('neko')
driver.find_element(:id, 'password').send_keys('inu')
driver.find_element(:css, 'li.loginBt > a').click
# ダウンロードする
driver.find_element(:css, 'input[value="ダウンロード(CSV)"]').click
# ログアウトする
driver.find_elements(:css, 'a').find { |element| element.text == 'ログアウト' }.click
end
↓
def scraiping
login
download
logout
end
def login
driver.navigate.to('https://サイト')
driver.find_element(:id, 'id').send_keys('neko')
driver.find_element(:id, 'password').send_keys('inu')
driver.find_element(:css, 'li.loginBt > a').click
end
def download
driver.find_element(:css, 'input[value="ダウンロード(CSV)"]').click
end
def logout
driver.find_elements(:css, 'a').find { |element| element.text == 'ログアウト' }.click
end
def scraiping
# ログインする
url = 'https://サイト'
driver.navigate.to(url)
driver.find_element(:id, 'id').send_keys('neko')
driver.find_element(:id, 'password').send_keys('inu')
driver.find_element(:css, 'li.loginBt > a').click
download
logout
end
↓
def scraiping
url = 'https://ふつうのサイト'
# 単に抽出しない
login(url)
download
logout
end
def login(url)
# 仮に抽出元で後続で変数を使用していなければ引数なしで一時変数としておけば良い
# url = 'https://サイト'
driver.navigate.to(url)
driver.find_element(:id, 'id').send_keys('neko')
driver.find_element(:id, 'password').send_keys('inu')
driver.find_element(:css, 'li.loginBt > a').click
# 仮に抽出元で変数を書き換えたものを後続で使用する場合は引数を返す必要がある
# url = 'https://サイト/1' if (driver.find_element(:id, 'next'))
end
관련 패턴
책 정보
Jay Fields (저자), Shane Harvie (저자), Martin Fowler (저자), Kent Beck (저자),
나가오 타카히로 (역), 리팩토링 : Ruby 에디션
htps : // 아 mz 응. 및 / 2VlyWML
잡감
가장 많이 사용하는 리팩토링
Reference
이 문제에 관하여(메서드 추출(Extract Method)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/dich1/items/35c353e25e40ca12e329텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)