Почему эта функция сравнивается с произвольным числом как нулевая проверка? - PullRequest
4 голосов
/ 16 января 2012

Я наткнулся на эту интересную функцию в части ASP Classic, которую я поддерживаю.Сначала я засмеялся, покачал головой, потом заплакал (только немного).Но потом я начал задаваться вопросом, есть ли какая-либо законная причина, по которой 999999999999999, по-видимому, будет считаться пустым, поскольку в VBScript есть свои причуды.Как упомянуто в комментариях, значения, переданные этой функции, возвращаются из dll COM.

Может кто-нибудь подтвердить, есть ли для этого какая-либо законная причина, или он готов для отправки в TheDailyWTF.

function NullNumberCheck(Value)
    if IsNumeric(Value) then
        if Value = 999999999999999 then
            Value = ""
        end if
    end if
   NullNumberCheck = Value
end function

Ответы [ 3 ]

2 голосов
/ 17 января 2012

Это похоже на случай "магического нуля" в источнике данных - есть ли в базе данных столбец, поддерживающий значения, передаваемые этой функции, которые не могут быть обнуляемыми?

Почему люди используют магические значения вместо нуля в своем коде?

1 голос
/ 17 января 2012

Автор использует это как метод очистки или сброса переменной.Устанавливая значение Value в пустую строку, оно очищает любое предыдущее значение.Автор мог бы так же легко установить его равным 0, vbNull или vbEmpty.Это действительно зависит от того, что вы делаете со значением позже в вашем скрипте.Если вы продолжите выполнять дополнительные проверки переменной, установка ее в vbNull может быть нецелесообразной, а установка равной vbEmpty может привести к сбою в вашем сценарии, если вы используете Option Explicit.

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

0 голосов
/ 16 января 2012

Чтобы проверить нулевое значение, вы можете использовать функцию IsNull, встроенную в VBscript

http://www.w3schools.com/vbscript/func_isnull.asp

...