Ruby / Rails:为什么'update_attribute'不是用bang(“!”)命名的?

时间:2014-08-14 21:53:14

标签: ruby-on-rails naming-conventions

鉴于update_attribute会改变对象并保存到数据库,为什么它没有以爆炸命名?我唯一的猜测是,触及数据库的方法往往会被命名,如果它们在失败时引发异常而不是仅返回错误,但我不确定是什么驱动了命名方案。< / p>

1 个答案:

答案 0 :(得分:1)

正如@Brad Werth所说,Ruby意味着最后一个!的方法应该有另一个类似命名的方法,最后没有!。带!的版本应该是危险版本。如果你的方法最后只有一个!而不是非爆炸对应的方法那么这就是所谓的prima-donna方法,并且是一种代码气味。例如,请参阅:https://github.com/troessner/reek/wiki/Prima-Donna-Method

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