Это лучше использовать || или включить? при проверке переменной по нескольким значениям? - PullRequest
1 голос
/ 16 сентября 2010

Какой способ написания этого условия лучше?

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 ]

2 голосов
/ 16 сентября 2010

Я нахожу второе уточнение по двум причинам:

1) Во второй версии проверяемые элементы расположены рядом друг с другом, разделенные запятыми.В первой версии всегда есть self.expense_gl_dist_code.dist_type ==, поэтому сканировать их все не так просто.

2) Во второй версии сразу видно, что все элементы проверяются на одно и то же состояние, а в первомверсия может сказать что-то вроде

dist_type == GlDistCode::PERCENTAGE || dist_type == GlDistCode::MIXED || dist_type != GlDistCode::WHATEVER

, и вы можете не заметить сразу.

1 голос
/ 16 сентября 2010

Если вы просто сравниваете два элемента, я бы сказал, что с любым из них все в порядке.

Я более склонен ко второй версии, потому что вы можете затем включить все элементы, с которыми вы хотите проверить, водна переменная, и назовите ее.Например

ALLOWED_TYPES = [GldDistCode::PERCENTAGE, GlDistCode::MIXED]

тогда

if ALLOWED_TYPES.include?(dist_type)

более разборчиво ИМХО.

Кстати, вы используете строки ("GldDistCode::PERCENTAGE") вместо фактического значениявы намеревались.

1 голос
/ 16 сентября 2010

Первый способ гораздо понятнее и поэтому предпочтительнее, чем второй, слегка запутанный.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...