Вы обычно устанавливаете значение по умолчанию раньше или устанавливаете его в другом? - PullRequest
6 голосов
/ 04 января 2009

Что из следующего вы делаете:

var = true;
if (...) var = false;

Или

if (...) var = false;
else var = true;

Есть ли причина, по которой вы выбираете или другая?

Я работаю в предположении, что с вар. Следующая строка кода может выглядеть примерно так:

if (var) { ... }

Ответы [ 13 ]

0 голосов
/ 04 января 2009

Поскольку переменная не записана в более поздние версии, для общих значений я написал бы следующее в Java:

final Type var;
if (cond)
{
    var = value1;
}
else
{
     var = value2;
}

Компилятор Java поймает ошибку, что var не присваивается значение перед использованием. Последнее ключевое слово выражает тот факт, что переменная является постоянной после условного.

В вашем конкретном случае с булевыми значениями я бы использовал

final boolean var = !cond;

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


В C я бы инициализировал переменную при ее объявлении.

0 голосов
/ 04 января 2009

Зависит от языка. В C ++ я настоятельно рекомендую установить его по умолчанию как можно быстрее, иначе вы рискуете получить результаты мусора.

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

0 голосов
/ 04 января 2009

Вы предпочитаете короткий и компактный код или код, который легче читать?

Если вы предпочитаете короткий и компактный код

<code>
var x = true;
if (...) x = false;

Но это даже можно "улучшить". Большинство языков дают начальные значения, и обычно для логического типа по умолчанию используется значение false. Итак, вы могли бы написать

<code>
var x;
if (...) x = true;

Если вы предпочитаете код, который легко читать

<code>
if (...) var x = false;
else var x = true;

потому что это проясняет ваши намерения.

Производительность обоих одинакова.

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