metaclass: (Default)
metaclass ([personal profile] metaclass) wrote2013-01-17 04:59 pm
Entry tags:

Немножко динамической типизации и кложури

Макрос with-db-comment выполняет указанную функцию с параметрами в контексте коннект+транзакция, с логом комментария к транзакции в БД.
dump-seq-debug скармливает последовательность в log4j для отладки.

вот такое падает с NPE:
(with-db-comment "(get-subaccounts 20)"
(dump-seq-debug (get-subaccounts "20")))

вот такое работает:
(with-db-comment "(get-subaccounts 20)"
dump-seq-debug (get-subaccounts "20"))

Можно ли увидеть разницу с первого раза и понять, откуда там NPE? :)

Вот эта содомия с лишними или пропущенными скобками, не обнаруживаемыми компилятором работу с кложурелиспами делает немного неудобной.
И практически не пригодной для осмысленного использования людьми без встроенной типовыводилки в голове.

[identity profile] vit-r.livejournal.com 2013-01-17 06:37 pm (UTC)(link)
Нужно всегда выносить непарную скобку на новую строчку.
(  abc
   (def)
   g
   )

всегда лучше "традиционного"
Правда, я за скобкой ещё и комментарий ставлю, к чему она относится, чтобы вверх-вниз не бегать

[identity profile] theiced.livejournal.com 2013-01-17 08:21 pm (UTC)(link)
за такое вырывать яйца

[identity profile] vit-r.livejournal.com 2013-01-17 09:09 pm (UTC)(link)
Насколько помню, первыми на эшафот стоят создатели С. Вот кто совсем ничего не понимал в программировании...

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

[identity profile] theiced.livejournal.com 2013-01-17 09:22 pm (UTC)(link)
такие скобки мешают читать код
точка

[identity profile] vit-r.livejournal.com 2013-01-17 09:23 pm (UTC)(link)
Увы, но код не читают. Это не книжка. Там всё на порядок интереснее.

[identity profile] theiced.livejournal.com 2013-01-17 09:26 pm (UTC)(link)
это ортуреги код не читают
а я читаю

[identity profile] metaclass.livejournal.com 2013-01-17 09:29 pm (UTC)(link)
Кстати, код обычно воспринимается как дерево, не как последовательный текст.
Ты ж не читаешь книгу - сначала начало параграфа, потом конец.
А код читать (и писать) лучше именно так.

[identity profile] vit-r.livejournal.com 2013-01-17 09:30 pm (UTC)(link)
Значит, открытия ещё впереди

[identity profile] metaclass.livejournal.com 2013-01-17 09:31 pm (UTC)(link)
Я так выносил, пока редактор с более-менее адекватной подсветкой скобок не попался под руки.
Но вообще отдельная строка для закрывающей скобки часто удобнее (и комментарии ставить проще и копироваьт строки.

[identity profile] vit-r.livejournal.com 2013-01-17 09:45 pm (UTC)(link)
Редактор не спасает в том случае, когда в результате изменения внутри цельность нарушается. И он не видит две парные ошибки.

[identity profile] theiced.livejournal.com 2013-01-17 09:49 pm (UTC)(link)
paredit нужен - тогда таких ошибок не возникает

[identity profile] vit-r.livejournal.com 2013-01-17 09:59 pm (UTC)(link)
Мозги не заменит

[identity profile] blackyblack.livejournal.com 2013-01-18 05:05 am (UTC)(link)
От парных ошибок не спасёт. Можно случайно или намеренно изменить одним нажатием уровень вложенности и после этого придётся считать скобочки...