Я думаю, что одним из основных аспектов является повторное использование . Когда вы строите вещи модульно, вряд ли есть что-то вроде: «О, я уже делал это раньше, но чтобы использовать это, мне также придется получить эту и эту функциональность, которая абсолютно не связана с моим приложением».
Кроме того, это легче понять. Я не могу одновременно держать в уме тонны вещей. Когда код является модульным, легче установить «область» вещей, которая имеет смысл сама по себе. И как только эта область становится маленькой, я могу понять ее целиком, а не ее части.
Наконец, когда вещи меньше, легче тестировать и обслуживать. Кроме того, ваши тесты быстрее показывают, где находится ошибка, когда они будут тестировать только небольшую часть приложения.