lqp - Post a comment
( Read Comments )
TimeText
11:25 pm
[info]lqp

[Link]

Про "чистый код"
(с фсбука, старое: начало, конец)

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

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

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

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

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

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

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

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

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

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

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

При этом я понимаю и принимаю, что в корпоративной среде может понадобится установить какой-то корпоративный стандарт, ограничения и запреты гарантирующие, что каждый кусок фирменного софтвера будет доступен для понимания самому глупому из нанимаемых фирмой кодеров. Вот только не надо выдавать нужду за добродетель и называть это "чистым кодом".
Reply:
 
From:
Identity URL: 
имя пользователя:    
Вы должны предварительно войти в LiveJournal.com
 
E-mail для ответов: 
Вы сможете оставлять комментарии, даже если не введете e-mail.
Но вы не сможете получать уведомления об ответах на ваши комментарии!
Внимание: на указанный адрес будет выслано подтверждение.
Username:
Password:
Subject:
No HTML allowed in subject
Message:



Notice! This user has turned on the option that logs your IP address when posting.
Powered by LJ.Rossia.org