Как программисты, нам нравится верить, что мы умные люди, поэтому трудно признать, что что-то слишком большое и сложное, чтобы думать обо всем сразу. Но для крупномасштабного программного проекта это действительно так, и чем раньше вы признаете свою ограниченную емкость мозга и начнете находить способы облегчить проблему, тем лучше вы будете.
Еще одна важная вещь, которую нужно понять, это то, что вы будете тратить большую часть своего времени на изменение существующего кода . Построение исходной кодовой базы - это просто период медового месяца - вам нужно разработать свой код с учетом того, что через 6 месяцев вы будете сидеть перед ним, пытаясь решить какую-то проблему, не зная, как работает этот конкретный модуль, даже хотя ты сам написал.
Итак, что мы можем сделать?
Минимизируйте связь между несвязанными частями вашего кода. Код будет меняться со временем так, как вы не можете его предвидеть - будут проблемы с интеграцией с незнакомыми продуктами, изменения требований - и они вызовут изменения в ряду. Если вы установили стабильные интерфейсы и закодировали их, вы можете внести любые необходимые изменения в реализацию, чтобы эти изменения не повлияли на код, использующий интерфейс. Вам нужно потратить время и усилия на разработку интерфейсов, которые выдержат испытание временем - если интерфейс тоже нужно изменить, вы вернетесь к исходной точке.
Создание автоматических тестов , которые можно использовать для регрессионного тестирования. Да, впереди много работы. Но это окупится в будущем, когда вы сможете внести изменения, запустить тесты и установить, что он все еще работает без того тревожного чувства, что все упадет, если вы внесете свое последнее изменение в источник управление.
Оставь в покое хитрые вещи. Время от времени я вижу какой-то хитрый трюк с шаблоном C ++ и думаю: «Ух ты! Это как раз то, что нужно моему коду!» Но правда в том, что уменьшение читабельности и понятности кода часто просто не стоит увеличения универсальности. Если вы такой же, как я, чья естественная склонность состоит в том, чтобы пытаться решить каждую проблему как можно более общим способом, вам нужно научиться сдерживать ее, пока вы на самом деле не встретите потребность для этого общего решения. Если возникает необходимость , возможно, вам придется переписать некоторый код - это не страшно.