LINUX.ORG.RU

История изменений

Исправление Kogrom, (текущая версия) :

KISS: Используется для отказа от необходимых абстракций («и так сойдет»).

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

YAGNI: Блокирует проектирование, приводит к архитектурному долгу, когда добавление функциональности требует переписывания.

Проектирование нужно, когда есть сложные данные. Если у нас набор действий, то всё проектирование - разделение кода на функции. Тут даже самое простейшее ООП только усложнит код. А в предложенной альтернативе не просто иерархия, там мини-фреймворк для написания внутреннего DSL.

Кроме того, что код без всякой нужды громоздкий, он ещё и по быстродействию хуже. Та же цепочка handler1.set_next(handler2).set_next(handler3).set_next(handler4)… не может прерваться, её нужно обходить всю, если не использовать хаков типа прерываний. В исходном коде и в коде с однозвенным циклом выйти из алгоритма можно в любом месте, если встретим нужное условие.

Исходная версия Kogrom, :

KISS: Используется для отказа от необходимых абстракций («и так сойдет»).

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

YAGNI: Блокирует проектирование, приводит к архитектурному долгу, когда добавление функциональности требует переписывания.

Проектирование нужно, когда есть сложные данные. Если у набор действий, то у нас всё проектирование - разделение кода на функции. Тут даже самое простейшее ООП только усложнит код. А в предложенной альтернативе не просто иерархия, там мини-фреймворк для написания внутреннего DSL.

Кроме того, что код без всякой нужды громоздкий, он ещё и по быстродействию хуже. Та же цепочка handler1.set_next(handler2).set_next(handler3).set_next(handler4)… не может прерваться, её нужно обходить всю, если не использовать хаков типа прерываний. В исходном коде и в коде с однозвенным циклом выйти из алгоритма можно в любом месте, если встретим нужное условие.