Размер кода
Есть принцип, который я раньше плохо понимал: «Делать классы, методы и функции минимальными». Этим трудно начать заниматься, если привык писать функции по 200 строк и работаешь с файлами по 3000 строк длинной.
Но у этого подхода есть три киллер-фичи:
1. Если разносить логику по разным полочкам, то связанность частей приложения становится слабее. Когда засовываешь код в один файл, объект класс или метод — очень сложно уследить, что код подписки на рассылку не сросся с контроллером формы. А если разнести логику на разные блоки, то будешь постоянно думать, какой информацией им нужно обмениваться и сводить её к минимуму.
2. (Следует из первого) Код можно тестировать, не создавая и запуская приложение целиком. Создали нужный экземпляр класса, подёргали его за методы и всё.
3. При таком подходе очень сложно говнокодить. Например, если ты видишь в коде конструкцию из пяти if, а задача срочная, то дописать к ней 6 и 7 кажется нормальным решением. И так уже плохо, что ещё два if изменят. А когда всё разбито на маленькие подфункции, накостылить уже намного сложнее, потому что непонятно даже, куда этот говнокод вписать.