में छोटी "कोड का दोहराव" गंध को कैसे संभालना है, इसलिए हम सभी डुप्लिकेशन (डीआरवाई) और अन्य गंध को कम करने का प्रयास करते हैं, और हमारे कोड को जितना संभव हो उतना अच्छा और साफ रखें। रूबी कोड के लिए, गंध का पता लगाने के लिए बहुत सारे यंत्र हैं, उदाहरण के लिए बहुत अच्छी Caliber सेवा।रेल/रूबी
हालांकि, ऐसा लगता है कि मेरे पास टूल की तुलना में कोड डुप्लिकेशन की एक अलग परिभाषा है। मुझे लगता है कि यह चीजों को करने के रूबी तरीके से जुड़ा हो सकता है, जहां आप लगभग एक चर का उपयोग कभी नहीं करते हैं, बल्कि इसके बजाय एक विधि कॉल के माध्यम से। एक रेल नियंत्रक से इस स्निपेट पर विचार करें:
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
एक विधि है और रूबी में एक वैरिएबल "व्यवसाय करने की लागत" सरल नहीं है।
क्या मैं इसे गलत तरीके से देख रहा हूं?
संपादित करें: इस मामले में, 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)
...
धन्यवाद दोस्तों। मैं सामान्य जवाब के साथ जा रहा हूं "गंध की रिपोर्ट को दिशानिर्देश के रूप में उपयोग करें, और हर विवरण पर पसीना न करें"। –