Стиль кода = когда использовать значение сравнения первым в операторе 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 ошибок", и любой, кто использует этот стиль, вряд ли предоставит чистый строительный код.