Немножко динамической типизации и кложури
Jan. 17th, 2013 04:59 pm![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
Макрос 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? :)
Вот эта содомия с лишними или пропущенными скобками, не обнаруживаемыми компилятором работу с кложурелиспами делает немного неудобной.
И практически не пригодной для осмысленного использования людьми без встроенной типовыводилки в голове.
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? :)
Вот эта содомия с лишними или пропущенными скобками, не обнаруживаемыми компилятором работу с кложурелиспами делает немного неудобной.
И практически не пригодной для осмысленного использования людьми без встроенной типовыводилки в голове.
no subject
Date: 2013-01-17 02:02 pm (UTC)no subject
Date: 2013-01-17 02:35 pm (UTC)no subject
Date: 2013-01-17 03:04 pm (UTC)no subject
Date: 2013-01-17 05:12 pm (UTC)no subject
Date: 2013-01-17 03:05 pm (UTC)no subject
Date: 2013-01-17 03:19 pm (UTC)no subject
Date: 2013-01-17 02:35 pm (UTC)no subject
Date: 2013-01-17 02:43 pm (UTC)[code]
dump-seq-debug (get-subaccounts "20"))
[/code]
при форматировании получиться никак не может.
то, что она некорректна, видно при первом же беглом взгляде на код.
в реальном коде может быть только такое:
[code]
(with-db-comment "(get-subaccounts 20)"
(dump-seq-debug (get-subaccounts "20")))
(with-db-comment "(get-subaccounts 20)"
dump-seq-debug
(get-subaccounts "20"))
[/code]
и тут разница сразу понятна.
с правильным форматированием пропустить скобки сбалансированным образом просто нельзя, а несбалансированные еще ридер подсветит.
no subject
Date: 2013-01-17 02:52 pm (UTC)no subject
Date: 2013-01-17 03:07 pm (UTC)no subject
Date: 2013-01-17 03:33 pm (UTC)no subject
Date: 2013-01-17 03:09 pm (UTC)А статическая типизация не нужна!
no subject
Date: 2013-01-17 03:27 pm (UTC)(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:no subject
Date: 2013-01-17 03:08 pm (UTC)no subject
Date: 2013-01-17 03:09 pm (UTC)no subject
Date: 2013-01-17 03:11 pm (UTC)(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From: (Anonymous) - Date: 2013-01-18 12:27 pm (UTC) - Expand(no subject)
From:no subject
Date: 2013-01-17 03:59 pm (UTC)(no subject)
From:no subject
Date: 2013-01-17 03:21 pm (UTC)С другой стороны если это макрос, то сделан он как-то криво. with- макросы не принимают что-либо для дергания, а принимают "контекст" (назовем его так) и тело для выполнения, правда это не обязательство, а хороший тон.
Тут вообще наезд настолько специфический, что больше похоже на бред, а не на реальный наезд.
(no subject)
From:(no subject)
From:no subject
Date: 2013-01-17 03:58 pm (UTC)(no subject)
From:no subject
Date: 2013-01-17 03:15 pm (UTC)no subject
Date: 2013-01-17 04:30 pm (UTC)no subject
Date: 2013-01-17 06:17 pm (UTC)no subject
Date: 2013-01-17 06:37 pm (UTC)всегда лучше "традиционного"
Правда, я за скобкой ещё и комментарий ставлю, к чему она относится, чтобы вверх-вниз не бегать
no subject
Date: 2013-01-17 08:21 pm (UTC)(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:no subject
Date: 2013-01-17 09:31 pm (UTC)Но вообще отдельная строка для закрывающей скобки часто удобнее (и комментарии ставить проще и копироваьт строки.
(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From: