Magic number? IN MY PROGRAM??? Ну и в идеале, канешн, это предикат. Т.е if ( isQueueFull(myQueue))... и boolean isQueueFull(queue) { return queue.length >= QUEUE_LENGTH; }
В языке-то в каком? Первый вариант применяют труъ программеры на старом хардкорном Си (который ещё K&R), дабы избежать ошибок вида "if(a=5) {do_something();}" Правда, в именно в твоем случае (сравнение вычисляемого с константой) компилятор, скорее всего, скажет что-то вроде "lvalue required". Ну еще вещественные числа так сравнивать нельзя, надо так "if(abs(somefunc() - 10.0) < epsilon). В большинстве остальных случаев, IMHO, второй вариант самый наглядный.
Если подумать... Если приходится сравнивать результат функции с _одной_ константой, то что-то спроектировано не так.
Так что в норме либо case по всему набору возможностей, либо pattern match, что по сути одно и то же.
Нет, разумеется, бывают отдельные случаи, когда задача такова, или (чаще) когда язык настолько беден, что приходится иметь константы, обозначающие другие варианты алгебраического типа (типа 0 в качестве N/A).
1. считается теоретически лучше, т.к. не присвоишь, но на присвоение уже вроде все компиляторы умеют ругаться, а от такого варианта меня выворачивает 2. вобщем то мой вариант, но предпочитают не иметь неименованных констант 3. ну это вообще ява какая-то 4. собстно так и ответил
Пользователь mklochkov сослался на вашу запись в записи «О Си и массивах — через год (http://mklochkov.livejournal.com/79149.html)» в контексте: [...] Питера ван Линдена, который и натолкнул меня на идею, как это сделать. Еще своим комментарием [...]
no subject
(no subject)
(no subject)
(no subject)
no subject
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
no subject
if (x()==10)
Для любых объектов (в том числе для строк):
if ( "Text".equals(x()) )
Причина сугубо практическая - лень делать проверку на null.
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
no subject
(no subject)
(no subject)
(no subject)
(no subject)
no subject
(no subject)
(no subject)
(no subject)
(no subject)
no subject
Ну и в идеале, канешн, это предикат.
Т.е
if ( isQueueFull(myQueue))...
и
boolean isQueueFull(queue)
{
return queue.length >= QUEUE_LENGTH;
}
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
no subject
Have you ever changed value of four?
... Intentionally?
... In the language, other than Fortran?
no subject
и еще через вызов удаленного soap метода
no subject
Первый вариант применяют труъ программеры на старом хардкорном Си (который ещё K&R), дабы избежать ошибок вида "if(a=5) {do_something();}"
Правда, в именно в твоем случае (сравнение вычисляемого с константой) компилятор, скорее всего, скажет что-то вроде "lvalue required".
Ну еще вещественные числа так сравнивать нельзя, надо так "if(abs(somefunc() - 10.0) < epsilon).
В большинстве остальных случаев, IMHO, второй вариант самый наглядный.
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
no subject
Так что в норме либо case по всему набору возможностей, либо pattern match, что по сути одно и то же.
Нет, разумеется, бывают отдельные случаи, когда задача такова, или (чаще) когда язык настолько беден, что приходится иметь константы, обозначающие другие варианты алгебраического типа (типа 0 в качестве N/A).
no subject
Вариант "10 == value" применяется ТОЛЬКО потому, что в случае типичной опечатки, которая превращает его в "10 = value", компилятор сообщает об ошибке.
Всё.
(no subject)
(no subject)
no subject
(no subject)
(no subject)
(no subject)
no subject
А так, бывет сравнение и в таком виде:
try
10 = SomeFunc(),
ok
catch
_:_ -> error
end
no subject
Привык уж так. Даже, бывает, в жавском коде так пишу не задумываясь.
no subject
1. считается теоретически лучше, т.к. не присвоишь, но на присвоение уже вроде все компиляторы умеют ругаться, а от такого варианта меня выворачивает
2. вобщем то мой вариант, но предпочитают не иметь неименованных констант
3. ну это вообще ява какая-то
4. собстно так и ответил
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
no subject
no subject
no subject
no subject
const A_NUMBER_I_LIKE_BEST = 10;
/* какой-то код */
if( someFunc() == A_NUMBER_I_LIKE_BEST )
Старшие товарищи приучили меня, что писать число в коде цифрами некошерно.
(no subject)
no subject
О Си и массивах — через год