История изменений
Исправление 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)… не может прерваться, её нужно обходить всю, если не использовать хаков типа прерываний. В исходном коде и в коде с однозвенным циклом выйти из алгоритма можно в любом месте, если встретим нужное условие.