crypt of decay - обратно про программирование [entries|archive|friends|userinfo]
ketmar

[ userinfo | ljr userinfo ]
[ archive | journal archive ]

обратно про программирование [Jun. 27th, 2011|09:33 am]
Previous Entry Add to Memories Tell A Friend Next Entry
за вот такой код надо просто убивать:
a && b || c || d+4>>2 && e

а вот так — правильно:
(a && b) || c || ((d+4)>>2 && e)


казалось бы — мелочь; а ведь можно и в больницу угодить с переломом челюсти.
Linkmeow!

Comments:
[User Picture]
From:[info]do_
Date:June 27th, 2011 - 09:13 am
(Link)
чаще пишу первый, чем второй
лет десять назад чаще писал второй
хуй с ним с побитовым сдвигом, но не помнить приоритет && и || -- это клиника.
может, ещё и умножение в скобки брать?
(a*b) + (c*d)
From:(Anonymous)
Date:June 27th, 2011 - 09:25 am
(Link)
внезапно +100500
[User Picture]
From:[info]ketmar
Date:June 27th, 2011 - 09:27 am
(Link)
кстати, я очень часто таки да — в скобки. элементарно: такой код проще читается. то есть, его не надо в мозгах интерпретировать, влёт видно, кто на ком стоял.
[User Picture]
From:[info]do_
Date:June 27th, 2011 - 09:46 am
(Link)
ну, далеко не всегда скобки лучше читаются. Если их в три слоя и больше,
то от них просто рябит в глазах. Проще читается то, что укладывается
в привычную логическую схему. a&&b || c&&d -- схема
абсолютно стандартная, когда я вижу в ней скобки, я напрягаюсь и начинаю
искать подвох.
[User Picture]
From:[info]ketmar
Date:June 27th, 2011 - 09:48 am
(Link)
а длинные матюки вообще лучше разбивать на несколько отдельных операторов. любой более-менее опытный программер способен написать матюк в пол-экрана высотой, только нафига? компьютеру похуй, он вообще из песка и палок, а вот живому существу читать напряжно будет.

кстати, gcc с -Wall по поводу таких конструкций тоже предлагает скобки нафигачить и не выёбываться.
[User Picture]
From:[info]do_
Date:June 27th, 2011 - 10:00 am
(Link)
Ну вот те матюки, которые не требуют скобок, как раз обычно можно и не разбивать,
они и так неплохо читаются. А вот если требуются скобки в три слоя -- тогда
да, лучше разбить.
From:[info]singleplaye-r.livejournal.com
Date:June 27th, 2011 - 10:08 am
(Link)
блина, это только я "матюки в три скобки" выкидываю в отдельные функции?
опять же, чтоб лучше читалось.
[User Picture]
From:[info]ketmar
Date:June 27th, 2011 - 10:12 am
(Link)
если у языка нет вложеных функций (а в си нет, только в gcc-расширениях), то это часто тупо добавляет мусора в код.

да, отчасти и поэтому я использую именно gcc. и мне срать на «пуристов» — вложеные функции удобны.
From:[info]singleplaye-r.livejournal.com
Date:June 27th, 2011 - 10:13 am
(Link)
ну... в AS, какбэ, тоже наличествуют :)
[User Picture]
From:[info]ketmar
Date:June 27th, 2011 - 10:17 am
(Link)
учитывая, что у вас там в угоду быдлу добавили «классы» (практически убив этим няшное прототипирование), этого ублюдка вообще сложно рассматривать как язык.
[User Picture]
From:[info]ketmar
Date:June 27th, 2011 - 10:11 am
(Link)
оно, конечно, очень вкусовщина — но со скобками таки проще. без скобок ты в черепе интерпретируешь выражение, а так сразу видно логические части. заодно правильные редакторы умеют «забрать от скобки до скобки» — тоже немаловажно.
From:[info]tzirechnoy.livejournal.com
Date:June 27th, 2011 - 02:00 pm
(Link)
А теперь вспоминаем хаскелль: в нём из любого <>--<^^>@!!!! можно сделать оператор, со своим приоритетом и ассоцыативностью. Что характерно, из половины -- таки сделали, и каждый первый ими пользуется. Читать офигенно.
[User Picture]
From:[info]ketmar
Date:June 27th, 2011 - 02:07 pm
(Link)
хацкель — это такое трололо, как и J.
From:[info]qulinxao
Date:June 27th, 2011 - 03:16 pm

ээээээ бля

(Link)
если всё оскобачивать(кроме верхних бинарных операций как в "правильном примере") то тогда уж и юзайте RPN или PN , а если грамотности(начитаности и памяти для сравнения всех неперегружиных(ибо если С то нет такого)) не хватает что бы правильно (да и ещё интуитивно ибо это же очевидно что у логического умножения приоритет выше логического сложения ну и ещё куча очевидностей имени Томпсона и Ричи и Рейнгольда и Стречи ) распарсить

короче сел и перечитал K&R /
From:[info]max630.net
Date:June 27th, 2011 - 05:50 pm
(Link)
>> и && на приплод оставил?
[User Picture]
From:[info]ketmar
Date:June 27th, 2011 - 05:56 pm
(Link)
ну не совсем до маразма же.