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