Если имя логического значения дает полное представление о том, что это такое, то я всегда выбираю версию 2. Однако иногда вы застряли с особенно тупым именем переменной, которое вы не можете изменить, по крайней мере, , сейчас не могу изменить ... Рефакторинг - это хорошо, но я стараюсь избегать рефакторинга слишком сильно при внесении функциональных изменений в код.
Например:
if (!NoDropDownInHeader == true)
{
// Activates when there *is* a dropdown in the header)
}
Я действительно видел этот конкретный пример в рабочем коде и упростил его до:
if (NoDropDownInHeader == false)
{
// Activates when there *is* a dropdown in the header
}
И я лично считаю, что оба примера более читабельны (хотя, возможно, первый пример может быть на одном уровне с этим для сложности умственного анализа), чем:
if (!NoDropDownInHeader)
{
// Activates when there *is* a dropdown in the header
}
Примечание: Да, я знаю, что переменная имеет неправильное имя, но изменение ее во множестве мест, где она присутствовала, выходит за рамки изменения, которое я делала из-за количества мест если бы повлияло .