写这种情况的哪种方式更好?
1)
(self.expense_gl_dist_code.dist_type == GlDistCode::PERCENTAGE || self.expense_gl_dist_code.dist_type == GlDistCode::MIXED)
2)
["GlDistCode::PERCENTAGE","GlDistCode::MIXED"].include?(self.expense_gl_dist_code.dist_type)
答案 0 :(得分:2)
我发现第二个更清楚的原因有两个:
1)在第二个版本中,要检查的元素彼此相邻,用逗号分隔。在第一个版本中总是self.expense_gl_dist_code.dist_type ==
,因此一次扫描它们就不那么容易了。
2)在第二个版本中,很明显所有元素都检查了相同的条件,而在第一个版本中它可以说类似
dist_type == GlDistCode::PERCENTAGE || dist_type == GlDistCode::MIXED || dist_type != GlDistCode::WHATEVER
你可能不会马上注意到。
答案 1 :(得分:1)
第一种方式更清晰,因此更倾向于稍微混淆的第二种选择。
答案 2 :(得分:1)
如果你只是比较两个元素,我会说两者都没问题。
我更倾向于第二个版本,因为您可以将要验证的所有元素包含在一个变量中,并命名它。例如
ALLOWED_TYPES = [GldDistCode::PERCENTAGE, GlDistCode::MIXED]
然后
if ALLOWED_TYPES.include?(dist_type)
更容易辨认恕我直言。
顺便说一句,您使用的是字符串("GldDistCode::PERCENTAGE"
),而不是您想要的实际值。