Ruby on Rails 코드의 리팩터링 방법은 무엇입니까?값의 범위가있는 리팩토링 조건
def select_plan
unless params[:plan] && (params[:plan] == '1' || params[:plan] == '2' || params[:plan] == '3' || params[:plan] == '4' || params[:plan] == '5' || params[:plan] == '6' || params[:plan] == '7' || params[:plan] == '8')
flash[:notice] = "Please select a membership plan to register."
redirect_to root_url
end
end
유효한 계획 번호는 어디에서 비롯 되었습니까? 그들은 데이터베이스에서 왔습니까? 그 (것)들을 어딘가에 정의하는 상수가 있습니까? 코드 전체에 마술 번호가 뿌려 졌습니까? –
"6은 유효한 계획"이라는 사실은 컨트롤러 메서드 나 여러 다른 장소에만 있기 때문에 리팩터링 할 필요가 있습니다. 실제로는 'select_plan'에있는 번거로운 구현이 아닙니다. 기본 문제를 해결하면'select_plan' 자체가 부작용으로 정리됩니다. –
@muistooshort - 내 수준의 경험을 용서해주십시오. 유효한 플랜 번호가 데이터베이스에 있습니다. 나는 당신이해야 할 말에 관심이 있습니다. 나는 당신이 의미한다는 것을 완전히 확신하지 못합니다. –