о поверхностной красоте кода (программ.)
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)
From:(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)
From:(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)
From:(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)
From:no subject
Date: 2009-11-04 06:30 pm (UTC)no subject
Date: 2009-11-04 06:47 pm (UTC)но юзать не стану, ибо лоси с линейками запарят...
no subject
Date: 2009-11-04 06:51 pm (UTC)В комментах там предлагают его превратить в маркос, чтобы глаз не "резало".
no subject
Date: 2009-11-04 10:20 pm (UTC)no subject
Date: 2009-11-05 10:37 am (UTC)no subject
Date: 2009-11-04 06:18 pm (UTC)no subject
Date: 2009-11-04 06:55 pm (UTC)хотя заботиться о читабельности и делать такую длинную функцУ - это я даже не знаю, с чем сравнить...
no subject
Date: 2009-11-04 06:18 pm (UTC)Если верить классикам...
Date: 2009-11-04 07:13 pm (UTC)На самом деле, надежность, скорость и пр. гораздо лучше улучшать когда код можно прочитать понормальному. Очень трудно оптимизировать код в котором есть десяток вложенных if и примерно из половины выход через goto.
Форматированием, понятное дело должен заниматься тектовый редактор. А вот без внятности тут никуда. Не думаю что тут уж такая тонкая грань. Только не надо путать комментарии по типа " теперь увеличиваем счетчик", и внятность кода, разумеется. ;-)
Re: Если верить классикам...
From:Re: Если верить классикам...
From:no subject
Date: 2009-11-04 06:25 pm (UTC)no subject
Date: 2009-11-04 06:33 pm (UTC)(no subject)
From:(no subject)
From:no subject
Date: 2009-11-05 10:19 am (UTC)(no subject)
From:(no subject)
From:no subject
Date: 2009-11-04 06:29 pm (UTC)Однажды я добавлял поддержку Authority Information Access в OpenSSL и впечатлился в полной мере.
Вообще, не то что бы качественный, но минимально приемлемый код составляет пренебрежимо малую часть общего объема кода; о причинах такого обстоятельства я боюсь думать.
no subject
Date: 2009-11-04 06:36 pm (UTC)А он ведь честно спрашивал в списке рассылки - и никто ему не смог сходу ответить, что да в процедурах сидинга ДСЧ читается неинициализорованная память. По принципу - хуже не будет, а если повезет - несколько лишних бит энтропии.
(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:ms office
From: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 10:48 pm (UTC)Reminds me of a lipstick on a pig...
no subject
Date: 2009-11-04 08:00 pm (UTC)no subject
Date: 2009-11-04 08:06 pm (UTC)Т.е. по стилю выглядит очень современно:
try {
Do something....
} catch(error e) {
Do some error related staff...
} finally {
Perform cleanup...
}
return ret;
С другими вещами и с главным тезисом полностью согласен.
У Кнута, кстати есть хорошая статья по теме goto - "Structured programming with goto statements" - http://pplab.snu.ac.kr/courses/adv_pl05/papers/p261-knuth.pdf
no subject
Date: 2009-11-04 08:58 pm (UTC)(no subject)
From:оффтопик )
Date: 2009-11-04 08:53 pm (UTC)Re: оффтопик )
Date: 2009-11-04 09:57 pm (UTC)Re: оффтопик )
From:no subject
Date: 2009-11-04 10:03 pm (UTC)Знаете, Анатолий, я никогда в жизни исходник procmail не видел, но слова моего учителя про procmail помнил всю жизнь. И сегодня наступил тот день, когда я прочитал этот ваш постинг, статью, приготовил чаек и в предвкушении райского эстетического наслаждения впервые в жизни открыл procmail.c, ожидая проникнуться настоящим искусством, ожидая получить нереальную порцию настоящего системного вдохновения...
Анатолий, расскажите пожалуйста, восстановите мой помутненный разум.... только вы можете мне вернуть покой!... я верю, в вашем опыте найдется ответ на этот вопрос смысла жизни...
Скажите... как можно так писать?????
no subject
Date: 2009-11-05 01:53 am (UTC)no subject
Date: 2009-11-05 06:35 am (UTC)no subject
Date: 2009-11-05 06:49 am (UTC)По поводу goto внутрь if-а - а какие альтернативы? Я не уверен что второй goto вместо if(0) был бы читабельнее. Претензии к форматированию - просто детский сад.
no subject
Date: 2009-11-05 07:10 am (UTC)return перед меткой, или проверка флага типа "всё ОК или нет".
(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)
From:(no subject)
From:(no subject)
From:(no subject)
From:no subject
Date: 2009-11-05 09:32 am (UTC)no subject
Date: 2009-11-05 09:34 am (UTC)