【问题标题】:Ruby / Rails: why isn't 'update_attribute' named with a bang ("!")? [closed]Ruby / Rails:为什么'update_attribute'没有用爆炸(“!”)命名? [关闭]
【发布时间】:2014-10-08 16:50:34
【问题描述】:

鉴于update_attribute 改变了对象并保存到数据库中,为什么它不以爆炸命名?我唯一的猜测是,如果它们在失败时引发异常而不是仅仅返回 false,那么接触数据库的方法往往会被命名,但我不确定这是驱动命名方案的原因。

【问题讨论】:

  • 你不是也问过同样的问题吗?
  • @BradWerth 我最初的问题不够具体。我已经知道“安全”/“危险”(变异)命名约定与“!”有关,但我很困惑为什么 update_attribute 似乎违反了这个约定。
  • 在您的其他问题中查看该链接。无论如何,这完全是意见。我再重复一遍:来自链接问题中的 matz:“爆炸符号意味着‘爆炸版本比非爆炸版本更危险;小心处理’”

标签: ruby-on-rails naming-conventions


【解决方案1】:

正如@Brad Werth 所说,Ruby 打算让一个以! 结尾的方法应该有另一个类似名称的方法,但最后没有!。带有! 的版本应该是危险版本。如果您的方法末尾带有 ! 但不是非爆炸对应物,那么这就是所谓的 prima-donna 方法并且是代码异味。参见,例如:https://github.com/troessner/reek/wiki/Prima-Donna-Method

update_attribute最后没有!的原因与它是否改变数据库中的数据或是否引发异常无关。这仅仅是因为改变数据库中的数据是update_attribute 方法的正常功能。并且没有爆炸对应物,因为它没有“危险”版本。 ! 引发异常的约定在当时是任意的,但对于 ActiveRecird 如何使用 save! 是有意义的。但这并不能使! = “引发异常”成为规则。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-13
    • 1970-01-01
    • 1970-01-01
    • 2011-06-21
    • 1970-01-01
    相关资源
    最近更新 更多