gpt4 book ai didi

ruby-on-rails - 如何处理 Rails/Ruby 中微不足道的 "duplication of code"气味

转载 作者:数据小太阳 更新时间:2023-10-29 07:17:26 25 4
gpt4 key购买 nike

因此,我们都努力减少重复 (DRY) 和其他异味,并尽可能保持我们的代码干净整洁。对于 Ruby 代码,有很多检测气味的工具,例如相当不错的 Caliber。服务。

但是,我对代码重复的定义似乎与工具不同。我认为这可能与 Ruby 的做事方式有关,您几乎从不直接访问变量,而是通过方法调用。考虑来自 Rails Controller 的这个片段:

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 是方法而不是变量这一事实在 Ruby 中是简单的“业务成本”。

我是不是看错了?

编辑:在这种情况下,更漂亮的方法可能是执行 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)
...

最佳答案

关于 DRY 和代码异味的概念,需要记住的一件事是它们是指南。它们的存在是为了帮助您思考如何以一种以森林换树木的方式组织和简化您的代码。虽然始终牢记这些概念是件好事,但在如此小的级别上挑剔代码重复往往最终会给您的代码带来不必要的复杂性或晦涩难懂。您的代码的可理解性也应该很重要,正如您所说,有时最清晰简洁的代码与删除所有重复痕迹的代码并不相同。

关于ruby-on-rails - 如何处理 Rails/Ruby 中微不足道的 "duplication of code"气味,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2301960/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com