tobotras: (Default)
tobotras ([personal profile] tobotras) wrote2013-03-18 11:57 am

Стилистическое

Глядя в код некоторых коллег увидел тут глубокое экзистенциальное различие между нами. Акакувас?

[Poll #1902710]

[identity profile] tarkhil.livejournal.com 2013-03-18 08:04 am (UTC)(link)
someObject.CalculateSampleValue.equalTo(new IntegerConstant("ten")) ;)

[identity profile] tnt23.livejournal.com 2013-03-18 08:11 am (UTC)(link)
Очень мешает, что это радиобаттоны, а не чекбоксы!

[identity profile] tarkhil.livejournal.com 2013-03-18 08:18 am (UTC)(link)
Да. Но тебе же понравилось?

[identity profile] deadmustdie.livejournal.com 2013-03-18 08:19 am (UTC)(link)
Для целых:
if (x()==10)

Для любых объектов (в том числе для строк):
if ( "Text".equals(x()) )

Причина сугубо практическая - лень делать проверку на null.

[identity profile] dzz.livejournal.com 2013-03-18 08:21 am (UTC)(link)
Вообще-то, в языках со слабой типизацией == не всегда означает ожидаемое сравнение, так что иногда я за if(IsEqual(SomeFunc(), 10))

[identity profile] tolok.livejournal.com 2013-03-18 08:26 am (UTC)(link)
10 == someFunc() это, наверное, из sql выросло, что ли

[identity profile] rmrfchik.livejournal.com 2013-03-18 08:27 am (UTC)(link)
Magic number? IN MY PROGRAM???
Ну и в идеале, канешн, это предикат.
Т.е
if ( isQueueFull(myQueue))...
и
boolean isQueueFull(queue)
{
return queue.length >= QUEUE_LENGTH;
}
vitus_wagner: My photo 2005 (white)

[personal profile] vitus_wagner 2013-03-18 08:27 am (UTC)(link)
Как было написано в хакерс тесте:
Have you ever changed value of four?
... Intentionally?
... In the language, other than Fortran?

[identity profile] http://users.livejournal.com/_slw/ 2013-03-18 08:28 am (UTC)(link)
через темплэйты надо.
и еще через вызов удаленного soap метода

[identity profile] rmrfchik.livejournal.com 2013-03-18 08:28 am (UTC)(link)
Так, что
getText("Hello")+getText(" World") в общем случае не равны "Hello World", но эквивалентны.

[identity profile] dzz.livejournal.com 2013-03-18 08:39 am (UTC)(link)
В этом смысле - да. По-моему, сравнивать неизвестное с известным (а не наоборот) логично для тех, кто пишет слева направо. Интересно было бы посмотреть на то, как пишут китайцы или израильтяне.

[identity profile] mklochkov.livejournal.com 2013-03-18 08:45 am (UTC)(link)
В языке-то в каком?
Первый вариант применяют труъ программеры на старом хардкорном Си (который ещё K&R), дабы избежать ошибок вида "if(a=5) {do_something();}"
Правда, в именно в твоем случае (сравнение вычисляемого с константой) компилятор, скорее всего, скажет что-то вроде "lvalue required".
Ну еще вещественные числа так сравнивать нельзя, надо так "if(abs(somefunc() - 10.0) < epsilon).
В большинстве остальных случаев, IMHO, второй вариант самый наглядный.

[identity profile] dzz.livejournal.com 2013-03-18 08:51 am (UTC)(link)
> Правда, в именно в твоем случае (сравнение вычисляемого с константой) компилятор, скорее всего, скажет что-то вроде "lvalue required".

K&R под руками нет, а gcc отлично справляется ;)

[identity profile] tnt23.livejournal.com 2013-03-18 09:01 am (UTC)(link)
Когда есть время, if (10 == func ()). Когда тороплюсь, как обычно :)

[identity profile] besm6.livejournal.com 2013-03-18 09:04 am (UTC)(link)
Если подумать... Если приходится сравнивать результат функции с _одной_ константой, то что-то спроектировано не так.

Так что в норме либо case по всему набору возможностей, либо pattern match, что по сути одно и то же.

Нет, разумеется, бывают отдельные случаи, когда задача такова, или (чаще) когда язык настолько беден, что приходится иметь константы, обозначающие другие варианты алгебраического типа (типа 0 в качестве N/A).
vitus_wagner: My photo 2005 (white)

[personal profile] vitus_wagner 2013-03-18 09:23 am (UTC)(link)
В С++ результат фуннкции запросто может быть lvalue (неконстантной ссылкой).

[identity profile] rmrfchik.livejournal.com 2013-03-18 09:23 am (UTC)(link)
(equals? hello "Hello")

Page 1 of 4