The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



"Ядру Linux исполнилось 28 лет"
Версия для распечатки Пред. тема | След. тема
Форум Разговоры, обсуждение новостей
Исходное сообщение [ Отслеживать ]
Присылайте удачные настройки в раздел примеров файлов конфигурации на WIKI.opennet.ru.
. "Ядру Linux исполнилось 28 лет" –3 +/
Сообщение от Ordu (ok), 26-Авг-19, 00:45 
> И да, похоже аноним не понял, в чем "прелесть" конструкции
> else if (l == 20 && strneq(word, "handle-hibernate-key", l))
>                        what |= INHIBIT_HANDLE_HIBERNATE_KEY;
>                else if (l == 17 && strneq(word, "handle-lid-switch", l))
> вместо
> else if(token.HANDLE_HIBERNATE_KEY) …

А я могу объяснить в чём прелесть. Чтобы сделать if(token.бла-бла-бла), придётся писать лишних строк пятьсот кода, с объявлением структуры token, и потом эти пятьсот строк кода будут в течение неопределённого времени получать патчи связанные с тем, что кому-то что-то надо было сделать, но оно не делалось нормально, кроме как через патч в библиотечный код. Типа мы изменили немного семантику флага в конфиге, поэтому мы теперь меняем структуру токена, переносим константы из одного enum'а, в другой enum, затем меняем содержимое статических массивов, по которым генерятся хештаблички для быстрого поиска. Затем мы вносим ещё парочку изменений, без которых код не компилируется. А потом мы запускаем аудит всего кода, который пользуется этой структурой, для того, чтобы убедиться, что мы ничего не поломали. На последнем этапе могут помочь тесты, но помочь относительно: мы в результате получим грядку тестов, которые не будут компилироваться, или которые будут фейлится, и нам придётся их переписывать. Груда никому не нужных усилий.

Если эти ненужные усилия всё же последовательно прилагать, то в результате код раздуется до полутора (двух, трёх...) тысяч строк кода. Будет получена какая-то мутная абстракция, которой пользоваться могут только те, кто её создавал. Да и они через год забудут. Значит придётся писать подробную документацию, причём не просто API с описанием точек входа и типов, а целый мануал на тему, как это использовать в тех или иных случаях. А это значит, что количество усилий на изменение семантики флага возрастёт ещё: придётся ещё и документацию на API парсера исправлять каждый раз.

Зачем все эти сложности? От этого код станет короче? От этого он станет понятнее? Понятнее в смысле, "понятнее что код делает", или в смысле "понятнее как код делает, то что он делает"? Код будет проще поддерживать? Это риторические вопросы, потому что ответы на них "незачем, эти сложности в этом месте не нужны", "нет", "нет", "некорректный вопрос: ни в каком смысле понятнее не станет", "нет".

Ответить | Правка | Наверх | Cообщить модератору

Оглавление
Ядру Linux исполнилось 28 лет, opennews, 25-Авг-19, 08:00  [смотреть все]
Форумы | Темы | Пред. тема | След. тема



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру