(A)像这样:
validates :network_id, :numericality => true
validates :direct_url, :presence => true
validates :domain_name, :presence => true
validates :merchant_id, :numericality => true
validates :is_paid_merchant, :presence => true
validates :is_top_merchant, :presence => true
validates :last_months_revenue, :presence => true,
:numericality => true
validates :name, :presence => true,
:length => { :maximum => 50 }
validates :primary_category_id, :numericality => true
validates :url, :presence => true
validates :url_tag, :presence => true,
:length => { :maximum => 45 }
-OR -
(B)是这样的:
validates :network_id,
:merchant_id,
:last_months_revenue,
:primary_category_id, :numericality => true
validates :direct_url,
:domain_name,
:is_paid_merchant,
:is_top_merchant,
:last_months_revenue,
:name,
:url,
:url_tag, :presence => true
validates :name, :length => { :maximum => 50 }
validates :url_tag, :length => { :maximum => 45 }
在第一种情况下,每个字段都有自己的validates子句,第二种情况是基于验证的内容(多次验证的字段多次出现)。第一种情况也是按字母顺序排列,因此跳转到特定字段会更有帮助。
-OR -
(C)我是否过于肛门保持我的代码如何读取和看起来?
答案 0 :(得分:2)
我个人更喜欢第一种风格。因为我必须阅读30行代码才能找出在单个字段上设置的验证。
答案 1 :(得分:2)
我认为第一种风格更好,原因如下:
在处理验证时 - 或者编辑一个 - 或为该字段添加新验证时,最有可能是“记住”特定字段名称。因此,列出每个字段的系统以及每个字段的所有验证都可以很好地阅读。
其他风格 - 小组验证一起导致在一个地方看到一个字段,但随后必须搜索并滚动以查找该字段的其他验证 - 并且很有可能您不会看到或了解其他字段该字段的验证可能是“屏幕外”而因此错过了。
在最初构建应用程序时(当第一种样式实际上看起来可能更容易)时,这也可能不是什么大不了的事情,但是当您添加或删除或更改字段和验证时(即现实世界中的应用程序构建)继续前进!')如果给定字段的所有验证都在一起,那么它将更容易且更不容易出错。
B)为什么不好的另一个例子...... 想象一下:
validates :network_id,
:merchant_id,
:last_months_revenue,
:primary_category_id, :numericality => true
validates :network_id,
:direct_url,
:domain_name,
:merchant_id,
:url,
:url_tag, :presence => true
validates :network_id :uniqueness => true
看看整个地方的场地是如何重复的? 现在想象一下删除network_id - 你好! 现在想象一下,添加另一个需要数字,唯一性和存在感的_id字段 - 你好!
另一个例子 - 有人可能会想(好吧,我很久以前就已经做过),我会将所有'需要的'组合在一起,然后对它们进行一个很好的评论,然后是所有的独特性,并带有注释标题标签所有这些,等等。所以开发人员可以遵循“标准”。像这样的方法的问题(除了之前的评论)是这是一个“本地”标准,其他程序员(当前和未来)需要理解,然后......希望......跟随。就像我自己喜欢它们一样,除非经过深思熟虑,否则像这样的个人标准往往会导致技术债务。
答案 2 :(得分:1)
对我来说更好的是A.一个属性的声明不是多余的,而是明确的。