그래서 우리는 중복 (DRY) 및 기타 냄새를 줄이고 최대한 코드를 깨끗하게 유지하려고 노력하고 있습니다. Ruby 코드의 경우 냄새를 감지 할 수있는 도구가 많이 있습니다 (예 : 꽤 좋은 Caliber 서비스).Rails/Ruby에서 "코드 중복"냄새를 처리하는 방법
그러나 코드 중복에 대한 정의가 도구와 다른 것으로 보입니다. 이 방법은 루비의 일을하는 방식과 관련이 있습니다. 변수를 직접 액세스하지는 않지만 대신 메서드 호출을 사용하는 방식입니다. 레일 컨트롤러에서이 조각을 고려해
def update_site_settings
SiteSettings.site_name = params[:site_name]
SiteSettings.site_theme = params[:site_theme]
expire_fragment('layout_header')
flash[:notice] = t(:Site_settings_updated)
redirect_to :controller => 'application', :action => 'edit_site_settings'
end
이는 때문에 "PARAMS"방법 두 통화의, 코드 중복 경고를 받았습니다. 그래서 내 질문은, 정말 로컬 변수에 params
할당하는 개선 될 것이라고? 이것이 가장 명확하고 간결한 방법으로 쓰여진 것으로 생각합니다. 그리고 params
은 변수이고, 루비에서는 단순한 "비즈니스 비용"이 아닙니다.
나는 이것을 잘못보고 있습니까?
편집 :이 경우 더 좋은 방법은 SiteSettings.update_attributes(params)
스타일 업데이트를하는 것입니다. 당신이 경우 다른 코드에서, 같은 문제를 고려
def update
@mailing_list = MailingList.find(params[:id])
if @mailing_list.update_attributes(params[:mailing_list])
flash[:notice] = t:Mailing_list_updated
redirect_to(mailing_lists_path)
...
감사합니다. 나는 "냄새 보고서를 지침으로 사용하고 세세한 부분까지 땀을 흘리지 말라"는 일반적인 대답으로 갈 것입니다. –