о поверхностной красоте кода (программ.)
Nov. 4th, 2009 07:44 pmОтличная блог-запись, с которой я полностью согласен (англ.). Процитирую ключевой абзац:
Именно так. А за goto в кусок кода, закрытый if(0), я бы дополнительно еще бил линейкой по рукам.
Там есть много ссылок на интересные куски кода - хорошие и плохие - рекомендую посмотреть. Во время перехода по ссылке на код procmail рекомендую сидеть и ничего не пить, во избежание травм.
So, while Marco's problem started with the project's shoddy documentation and API, his actual code criticism focuses on issues that are apparently superficial. He hasn't discovered a substantive bug or architectural weakness in the snippet above. Instead, what matters to him are simple virtues like consistency, style, and readability. Marco is saying, in fact, that the OpenSSL code sucks because it lacks superficial beauty. I couldn't agree with this position more.
Именно так. А за goto в кусок кода, закрытый if(0), я бы дополнительно еще бил линейкой по рукам.
Там есть много ссылок на интересные куски кода - хорошие и плохие - рекомендую посмотреть. Во время перехода по ссылке на код procmail рекомендую сидеть и ничего не пить, во избежание травм.
no subject
Date: 2009-11-04 06:06 pm (UTC)Ну не хватало чуваку локальной функции, выкрутился как мог :)
no subject
Date: 2009-11-04 06:17 pm (UTC)no subject
Date: 2009-11-04 06:18 pm (UTC)no subject
Date: 2009-11-04 06:18 pm (UTC)no subject
Date: 2009-11-04 06:25 pm (UTC)no subject
Date: 2009-11-04 06:29 pm (UTC)Однажды я добавлял поддержку Authority Information Access в OpenSSL и впечатлился в полной мере.
Вообще, не то что бы качественный, но минимально приемлемый код составляет пренебрежимо малую часть общего объема кода; о причинах такого обстоятельства я боюсь думать.
no subject
Date: 2009-11-04 06:29 pm (UTC)Дисклеймер: сам бы я так писать, пожалуй, не стал.
no subject
Date: 2009-11-04 06:30 pm (UTC)no subject
Date: 2009-11-04 06:32 pm (UTC)no subject
Date: 2009-11-04 06:33 pm (UTC)no subject
Date: 2009-11-04 06:36 pm (UTC)А он ведь честно спрашивал в списке рассылки - и никто ему не смог сходу ответить, что да в процедурах сидинга ДСЧ читается неинициализорованная память. По принципу - хуже не будет, а если повезет - несколько лишних бит энтропии.
no subject
Date: 2009-11-04 06:38 pm (UTC)no subject
Date: 2009-11-04 06:39 pm (UTC)goto nomore_rc;
goto nomore_rc;
goto nomore_rc;
goto nomore_rc;
goto nomore_rc;
no subject
ГотичноГалахичноФеерично!no subject
Date: 2009-11-04 06:47 pm (UTC)но юзать не стану, ибо лоси с линейками запарят...
no subject
Date: 2009-11-04 06:49 pm (UTC)no subject
Date: 2009-11-04 06:51 pm (UTC)В комментах там предлагают его превратить в маркос, чтобы глаз не "резало".
no subject
Date: 2009-11-04 06:55 pm (UTC)хотя заботиться о читабельности и делать такую длинную функцУ - это я даже не знаю, с чем сравнить...
no subject
Date: 2009-11-04 07:10 pm (UTC)что именно Вы находите гадостью: паттерн "goto Cleanup;" как таковой или if(0)?
Если верить классикам...
Date: 2009-11-04 07:13 pm (UTC)На самом деле, надежность, скорость и пр. гораздо лучше улучшать когда код можно прочитать понормальному. Очень трудно оптимизировать код в котором есть десяток вложенных if и примерно из половины выход через goto.
Форматированием, понятное дело должен заниматься тектовый редактор. А вот без внятности тут никуда. Не думаю что тут уж такая тонкая грань. Только не надо путать комментарии по типа " теперь увеличиваем счетчик", и внятность кода, разумеется. ;-)
no subject
Date: 2009-11-04 07:15 pm (UTC)no subject
Date: 2009-11-04 07:15 pm (UTC)no subject
Date: 2009-11-04 07:16 pm (UTC)А еще они патчи к документации принимают с куда большим скрипом, чем к коду.
Re: Если верить классикам...
Date: 2009-11-04 07:16 pm (UTC)no subject
Date: 2009-11-04 07:19 pm (UTC)