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

Осенило

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

[identity profile] http://users.livejournal.com/_winnie/ 2014-12-17 12:03 pm (UTC)(link)
Мой опыт - каждый if это полбага в трекере (и виртуальной функции это тоже касается).

Костыль - это не совсем if. Костыль - это причина потери времени разработчика на одновременно неинтересную и ненужную работу.

Костыли есть двух видов: внутренние внутри сервиса/программы (это не особо страшно, можно взять и поправить когда надо), и в интерфейсах/внешнем поведении. Вторые - страшное зло, так как их нельзя взять и поправить, тут же прибегут пользователи у которых что-то сломалось.

[identity profile] vanderdecken-lj.livejournal.com 2014-12-17 12:15 pm (UTC)(link)
Костыль - это не лишний if, а слишком широкий интерфейс между частями программы. Как правило, это лишняя переменная

[personal profile] alll 2014-12-17 12:19 pm (UTC)(link)
> добавление уровня абстракции, избавляющего от использования if через, например, виртуальные функции

Использование виртуальных функций вовсе не избавляет от "if", оно просто уменьшает их количество/дублирование. Потому как один раз тип объекта всё-равно придётся назначить "вручную", пусть даже и упрятав этот выбор где-нибудь в xml-клоаке. :)

[identity profile] kouzdra.livejournal.com 2014-12-17 01:05 pm (UTC)(link)
Напомню только что if элементарно реализуется через виртуальные функции: в Smalltalk он именно так и реализован:

Там есть класс bool с методами ifTrue и ifFalse, которые вычисляют значение своего параметра. И наследники этого класса с инстансами true и false с соответствующей реализацией этих методов :)))
Edited 2014-12-17 13:10 (UTC)

[identity profile] beldmit.livejournal.com 2014-12-17 02:28 pm (UTC)(link)
Не совсем. Костыль - это оператор if с одним и тем же условием во многих местах.

[identity profile] green-shaman.livejournal.com 2014-12-17 08:05 pm (UTC)(link)
...выливающееся впоследствии в переписывание всего и вся если с абстракцией не угадали.

А вообще, конечно, надо конкретный случай разбирать. Может, там if-ов уже столько, что без нового уровня абстракции совсем плохо. С другой стороны, если горит и уже вчера надо, то красоту на потом.