lqp - Про "чистый код"
March 31st, 2022
11:25 pm

[Link]

Previous Entry Add to Memories Tell A Friend Next Entry
Про "чистый код"
(с фсбука, старое: начало, конец)

В очередной раз окрысился в каментах на очередную агитку "пишите чистый код" и решил что надо вынести свою позицию в постинг.

(Дискляймер: Я не профессиональный программист, хоть пррограммирование является моей основной служебным занятием - в смысле, результатом моей работы являются не сами программы, а сделанные с их помощью расчеты)

Итак что я думаю по "чистый легкочитаемый код" .

1) Размер имеет значение. Для отладки практически всегда лучше иметь дело с кодом размером в один экран, чем с таким же по функциональности кодом размером в десять экранов. Каким бы "чистым" и "легкочитаемым" не был последний и каким бы сложным и запутанным первый. При размазывании сложности алгоритма по большему количеству строчек кода сложность восприятия каждо отдельной строчки падает, но сложность работы с алгоритмом в целом растет за счет накладных расходов, в частности, на перелистывание листинга и перезагрузку контекста.

Это вот то, что регулярно приходится обьяснять неосиляторам Perl-а: что нет, это однострочник приходится разбирать едва ли не посимвольно не потому что его автор над вами издевается, а потому что на вашем любимом питоне/вижуалбейсике/коболе эквивалентный алгоритм займет сотни строк и нет, писать, отлаживать и читать его профессионал со сравнимой квалификацией будет гораздо дольше, чем потратит на разбор однострочника. Отсюда мы плавно переходим ко второму пункту.

2) Понятность текста субьективна. Любого текста, программного кода в том числе. Если вы не знаете языка на котором написана книга, она будет для вас тарабарщиной, но никакой вины автора в этом нет.

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

И пропагандирующие "чистый код" статьи и книги как раз на 90% состоят из такого вот неосиляторства, требований запретить все, выходящее за пределы элементарного учебника "Programming Language X for Dummies", включая элементы синтакксиса языка Х не описанные в оном учебнике. Чтобы значицца, кодер Вася, только что окончивший трехнедельные курсы программирования, не испытывал чувства неполноценности, глядя на код профессора Василий Василича, начинавшего еще на БЭСМ-6.

3) Как указывал еще Вирт, удобчитаемость вашей программы на 90+% зависит от выбранной модели данных. Если у вас кривая организация данных, вы прокляты навеки и никакие усилия по расстановке скобочек вас не спасут.

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

Не одобряю и не уважаю.

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

(Leave a comment)

Powered by LJ.Rossia.org