18 ноября 2014

Сравнение с boolean

Есть одна вещь в коде, которая мне не нравится (она не одна :), но все перечислять не буду). Это сравнение с boolean literal:
image
Не так давно, на одном из проектов, я пытался понять что движет людьми когда они так пишут код – я решил что это либо недостаток знания языка, либо ошибка, либо страх менять legacy код.
По поводу legacy – есть код который работает (возможно лет десять). И тут возникает необходимость добавить фичу\фикс. После того как работа сделана – изменения могут привести к тому что появится сравнение с boolean (например, упростилось логическое выражение) и автор кода не хочет убирать сравнение в страхе поломать что-нибудь. Ситуация выдуманная и я не знаю она ли приводит к подобному коду – но я вижу это не в первый раз. К слову, код написан специалистами из Индии для клиента из Индии :).
Но, вот код из документации Microsoft
http://msdn.microsoft.com/en-us/library/bb546150.aspx
image
Я в своей практике стараюсь убирать подобные выражения. По моему мнению, если код требует сравнения с boolean чтобы было понятно что происходит – то нужно выносить это в метод с понятным и информативным названием.