По моему опыту, наиболее распространенной причиной избыточных фреймворков является ... скучающие разработчики !Uninspired разработчики считают, что разработка фреймворков для решения своих проблем гораздо веселее, чем на самом деле решение этих проблем - конечный результат - фреймворки, которые страдают от всего вышеперечисленного (потому что, конечно, разработчик только сделал забавные кусочки), и, возможно, недаже решить реальную проблему (потому что цель состояла в том, чтобы повеселиться, а не решить проблему).
Решение хитрое - трудно понять, что мотивирует разработчиков, так как каждый мотивируется разными вещами,однако мотивированные разработчики, которые заняты тем, что им нравится, не видят, чтобы страдать от этого недуга!
Тем не менее, хорошо продуманные фреймворки при правильном использовании, безусловно, хорошая вещь - Однакоесли он будет использоваться только для внутреннего использования, то лучше вместо этого думать о нем как о расширении ре-факторинга и повторного использования кода, а не как о структуре.
Классический признак того, что кто-то страдает от синдром скучающего разработчика - это когда разрабатывается инфраструктура для решения общего случая , когда еще нет решения для конкретного случая :
- Как узнать, как решитьобщий случай, пока вы не решили хотя бы один конкретный случай?
- Пока вам не пришлось решать общий случай несколько раз, вы только угадываете , что фреймворк необходим даже .
Второй случай, конечно, приводит к наихудшему виду фреймворка - гигантскому универсальному фреймворку, который используется только один раз, для решения проблемы, которая намного проще, чем сама фреймворк.
Вместо этого рассматривайте эти виды фреймворков скорее как упражнение в «расширенном рефакторинге» - если фреймворк создается как способ группировки и упорядочения общего кода по мере необходимости, то фреймворк будет увеличиваться в размере исложность динамически - уже решив проблему до того, как вы начнете создавать фреймворки, это тоже хорошо, так как это означает, что вы уже являетесь экспертом в областино это то, что нужно сделать фреймворку.
Наконец, постарайтесь не дать разработчикам скучать (в противном случае они попадают во всякое зло!)