使用||更好吗?或包括?在针对多个值检查变量时?

时间:2010-09-15 21:54:09

标签: ruby

写这种情况的哪种方式更好?

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)

3 个答案:

答案 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"),而不是您想要的实际值。