avva: (Default)
[personal profile] avva
Отличная блог-запись, с которой я полностью согласен (англ.). Процитирую ключевой абзац:
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 рекомендую сидеть и ничего не пить, во избежание травм.
Page 1 of 4 << [1] [2] [3] [4] >>

Date: 2009-11-04 06:06 pm (UTC)
From: [identity profile] mopexod.livejournal.com
Черт, goto в кусок кода, закрытый if(0) - красиво!
Ну не хватало чуваку локальной функции, выкрутился как мог :)

Date: 2009-11-04 06:17 pm (UTC)
From: [identity profile] itman.livejournal.com
Что говорит о том, что красота кода - понятие субъективное. По поводу if(0): многие чистые сишники ненавидят си++, а в си++ такую гадость не пришлось бы писать, можно было с помощью деструктора разрулить.

Date: 2009-11-04 06:18 pm (UTC)
From: [identity profile] shigin.livejournal.com
Я открыл procmail.c. Кто--нибудь может объяснить зачем там ставят точку с запятой перед блоком? Что бы получился смайлик?

Date: 2009-11-04 06:18 pm (UTC)
From: [identity profile] itman.livejournal.com
На самом деле это все очень субъективно. И, что самое главное, если бы форматированию и внешней красоте кода уделяли бы поменьше времени, то это время можно с пользой бросить на улучшение надежности, скорости, и пр.. кода. Впрочем, это очень тонкая грань: запутанный код тяжело сопровождать.

Date: 2009-11-04 06:25 pm (UTC)
From: [identity profile] beldmit.livejournal.com
Не, ну часть IFDEF-ов из OpenSSL теоретически можно изжить, сдвинув все алгоритмы в engine. Практически - после этого, например, не получится реализовать SSL/TLS. Мы с коллегами пробовали, утверждаю со знанием дела.

Date: 2009-11-04 06:29 pm (UTC)
From: [identity profile] trurle.livejournal.com
OpenSSL source code sucks in a big way.
Однажды я добавлял поддержку Authority Information Access в OpenSSL и впечатлился в полной мере.
Вообще, не то что бы качественный, но минимально приемлемый код составляет пренебрежимо малую часть общего объема кода; о причинах такого обстоятельства я боюсь думать.

Date: 2009-11-04 06:29 pm (UTC)
From: [identity profile] mopexod.livejournal.com
Про деструктор, в принципе - да. Но тут - очень простое решение, с деструктором получится гораздо сложнее, у него же нет доступа к локальным переменным :)
Дисклеймер: сам бы я так писать, пожалуй, не стал.

Date: 2009-11-04 06:30 pm (UTC)
vitus_wagner: My photo 2005 (Default)
From: [personal profile] vitus_wagner
Вообще-то обычно там делают перед меткой err: return.

Date: 2009-11-04 06:32 pm (UTC)
From: [identity profile] itman.livejournal.com
я имею в виду логику auto_ptr

Date: 2009-11-04 06:33 pm (UTC)
vitus_wagner: My photo 2005 (Default)
From: [personal profile] vitus_wagner
Ну ты ж знаешь, что самый цимес там не в ifdef-ах, а в реализованном на препроцессоре парсере/сериализаторе ASN.1.

Date: 2009-11-04 06:36 pm (UTC)
vitus_wagner: My photo 2005 (Default)
From: [personal profile] vitus_wagner
Там засада в том, что НИКТО в данный момент не представляет логику работы этого хозяйства в полном объеме. Следствием этого была недавняя история с багом в Debian, когда мейнтейнер решил убрать чтение неинициализированной памяти, и в результате оторвал вообще все источники случайности кроме PID.

А он ведь честно спрашивал в списке рассылки - и никто ему не смог сходу ответить, что да в процедурах сидинга ДСЧ читается неинициализорованная память. По принципу - хуже не будет, а если повезет - несколько лишних бит энтропии.

Date: 2009-11-04 06:38 pm (UTC)
From: [identity profile] trurle.livejournal.com
Мне кажется что потеря понимания логики работы этого хозяйства в значительной степени является результатом бардака в дизайне и кодировании.

Date: 2009-11-04 06:39 pm (UTC)
From: [identity profile] amarao-san.livejournal.com
goto nomore_rc;
goto nomore_rc;
goto nomore_rc;
goto nomore_rc;
goto nomore_rc;
goto nomore_rc;

Date: 2009-11-04 06:43 pm (UTC)
From: [identity profile] ygam.livejournal.com
Послал ссылку на procmail.c в рабочую рассылку. ГотичноГалахичноФеерично!

Date: 2009-11-04 06:47 pm (UTC)
From: [identity profile] psilogic.livejournal.com
по-моему тоже красиво :)

но юзать не стану, ибо лоси с линейками запарят...

Date: 2009-11-04 06:49 pm (UTC)
From: [identity profile] ygam.livejournal.com
Это вы еще не видели Майкрософт Оффис!

Date: 2009-11-04 06:51 pm (UTC)
From: [identity profile] esspe.livejournal.com
if(0) тоже понравился, красивая обработка исключений :)

В комментах там предлагают его превратить в маркос, чтобы глаз не "резало".

Date: 2009-11-04 06:55 pm (UTC)
From: [identity profile] psilogic.livejournal.com
предположу, что для читабельности - чтобы отметить тот факт, что это блок не относится к какому-нибудь if/else/for строкой выше

хотя заботиться о читабельности и делать такую длинную функцУ - это я даже не знаю, с чем сравнить...

Date: 2009-11-04 07:10 pm (UTC)
From: [identity profile] cmm.livejournal.com
в си++ такую гадость не пришлось бы писать

что именно Вы находите гадостью: паттерн "goto Cleanup;" как таковой или if(0)?

Если верить классикам...

Date: 2009-11-04 07:13 pm (UTC)
From: [identity profile] marknn.livejournal.com
...Premature optimization is the root of all evil. (DK)

На самом деле, надежность, скорость и пр. гораздо лучше улучшать когда код можно прочитать понормальному. Очень трудно оптимизировать код в котором есть десяток вложенных if и примерно из половины выход через goto.

Форматированием, понятное дело должен заниматься тектовый редактор. А вот без внятности тут никуда. Не думаю что тут уж такая тонкая грань. Только не надо путать комментарии по типа " теперь увеличиваем счетчик", и внятность кода, разумеется. ;-)

Date: 2009-11-04 07:15 pm (UTC)
vitus_wagner: My photo 2005 (Default)
From: [personal profile] vitus_wagner
Ну, лично я не видел. А Петя Квитек - видел. И много и эмоционально об этом рассказывал.

Date: 2009-11-04 07:15 pm (UTC)
From: [identity profile] itman.livejournal.com
goto куда бы то ни было.

Date: 2009-11-04 07:16 pm (UTC)
vitus_wagner: My photo 2005 (Default)
From: [personal profile] vitus_wagner
Ну, скорее наоборот. Отсуствие человека, который понимает логику дизайна приводит к бардаку в дизайне и кодировании.
А еще они патчи к документации принимают с куда большим скрипом, чем к коду.

Re: Если верить классикам...

Date: 2009-11-04 07:16 pm (UTC)
From: [identity profile] itman.livejournal.com
Никто не путает. Десять вложенных условий - это плохо. Длинные функцие - тоже плохо, потому что нечитабельно. По поводу тонкой грани: она, действительно тонкая, пообщайтесь с разработчиками. Выяснится, что у всех свое понимание того, что читабельно, а что не очень.

Date: 2009-11-04 07:19 pm (UTC)
From: [identity profile] cmm.livejournal.com
ну-ну.
Page 1 of 4 << [1] [2] [3] [4] >>

December 2025

S M T W T F S
  123 4 56
78 9 10 11 1213
1415 1617181920
21 22 23 24 2526 27
28293031   

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Dec. 29th, 2025 02:21 pm
Powered by Dreamwidth Studios