Наш проект прошел очень серьезную веху - кол-во строчек кода перевалило за один миллион.
Нет, это не
индусский быдлокод. Нет, это не 100 строк комментариев на строчку кода. Это действительно относительно честный миллион строк, и это самое большое приложение, с которым я в своей жизни сталкивался.
Я не питаю иллюзий насчет качества нашего продукта, и не считаю его безупречным. В качестве иллюстрации могу показать реестр необходимых рефакторингов - на сегодня в нем значится около 70 пунктов. Однако, несмотря на все эти трудности, мы смогли довести продукт до релиза - и это победа.
Основной рецепт, гарантирующий успех проектирования таких больших приложений - НИКОГДА не проектируйте таких больших приложений. Проектируйте набор маленьких, самостоятельных и компактных приложений-служб "на один укус". А дальше собирайте из этих служб то, что вам необходимо. Такой подход сделает вас неуязвимыми против ошибок проектирования, ошибок кодирования и т.п. Даже если одно из ваших приложений окажется кривым-неподходящим-неудачным-непроизводительным, вы всегда можете его просто выкинуть и заменить новое без серъезного ущерба для оставшихся приложений.
Подобный подход на самом деле предоставляет существенно больше возможностей и гибкости, чем кажется с первого взгляда. Вдумайтесь - вы МОЖЕТЕ ошибаться. Качество кода в отдельно взятом приложении МОЖЕТ быть невысоким - ведь единственное, что всех волнует - это соблюдение приложением контракта.
Есть только одно место, на котором экономить не стоит - доменная модель. Тут качество должно быть бескомпромисным, потому что она лежит в фундаменте всех ваших активностей.
Делайте доменную модель
Rich, делайте ее хорошо, а все остальное получится само собою :)