Стиль кода = когда использовать значение сравнения первым в операторе if

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

if ( false === $testValue) {
    //do something
}

в отличие от более общего:

if ($testValue === false) {
    //do something
}

Очевидно, что это вопрос стиля, и он не имеет никакого отношения к результату, но мой вопрос: кто-нибудь может сказать, почему кто-то будет использовать этот стиль и откуда он взялся.

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

4 ответа

Решение

Это так, что если вы случайно наберете = (назначение) вместо == (сравнение), компилятор жалуется, что константе нельзя присвоить.

Для сравнения:

if (false = $testValue) {
    // does not compile, cannot assign to constant
}

чтобы:

if ($testValue = false) {
    // assigns false to $testValue, never evaluates to true
}

Первый не компилируется, последний делает и имеет ошибку.

Что-то вроде C++ (я не уверен, какой язык вы используете там с ===), если у вас есть

if(x == 2)и ты пишешь это if(x=2) (так что значение присваивается не проверено на равенство), это не вызывает ошибку компилятора (большинство компиляторов сегодня предупреждают вас об этом), но если вы напишите if (2=x) вместо if(2==x) это определенно приведет к ошибке.

Я видел такие проверки в C и C++:

if (null == x)

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

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

Это совершенно не нужно, если соблюдалась политика сборки "0 предупреждений, 0 ошибок", и любой, кто использует этот стиль, вряд ли предоставит чистый строительный код.

Другие вопросы по тегам