gornal: (фото)
gornal ([personal profile] gornal) wrote2014-12-17 02:49 pm

Осенило

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

[identity profile] beldmit.livejournal.com 2014-12-17 02:54 pm (UTC)(link)
Собственно, костыли, которые я видел, чаще всего порождены двумя сценариями из жизни.

1. Было только A. Потом добавилось Б. Пример - алгоритмы ЭЦП и код openssl до версии 1.0, где у тебя куча мест, которые имеют вид case RSA: case DSA: case EC:

2. Был нормальный процесс обработки, и к нему захотелось присобачить маркетинговую акцию. И ползет, значит, программист по потрохам кода с верёвкой в зубах.

Случаи первой природы лечатся уровнем абстракции. Случаи второго лечатся выкидыванием.

[identity profile] dmih.livejournal.com 2014-12-17 03:20 pm (UTC)(link)
Я про второй случай что-то не понял. Выкидыванием чего?

[identity profile] beldmit.livejournal.com 2014-12-17 05:46 pm (UTC)(link)
"А эта хрень у нас с тех пор, когда маркетоид Вася (как, ты не помнишь? А, он до тебя уволился) протолкнул акцию. 5 лет назад. Да, наверное, лучше выкинуть тихо, пока начальство не видит. Акции уже три года нет, а ключевые блоки переписал Саша, с которым ты пересёкся на испытательном."
Edited 2014-12-17 18:04 (UTC)

[identity profile] dmih.livejournal.com 2014-12-17 06:10 pm (UTC)(link)
Мне кажется, не стоит путать написание OpenSSL-я и бизнес-приложения всё-таки :)

[identity profile] beldmit.livejournal.com 2014-12-17 06:13 pm (UTC)(link)
Оно конечно. Но кейсы первого типа бывают и в бизнес-приложениях, и в системных. А кейсы второго - только в бизнесе.

В OpenSSL есть свои артефакты - типа совместимости с компилятором gcc 2.95 на платформе, которую живьём никто уже не видел, но бОльшая часть их должна в скором времени нас покинуть.

Впрочем, если в системе совсем нет костылей, то она скорее всего достаточно маленькая.