С плохой поддержкой кодовой базы вы можете справиться только тогда, когда вы очень маленькая (менее 10-20 человек или около того в одном проекте) команда разработчиков. Если ваш проект будет расти, а ваша команда - расширяться, то ваши методы будут расширяться или вы потерпите неудачу.
Изменение, о котором вы спрашиваете, по сути, является переходом от взлома к программированию и, наконец, к разработке программного обеспечения.
С Software Engineering вы понимаете, что не все в команде идеальны. Вы просматриваете код, вы проверяете, что другие тестируют, вы перепроверяете друг друга.
Вы начинаете видеть потребность в архитекторе, который сможет переварить пожелания клиентов и перевести их в проектный документ. Это может легко занять месяц времени, прежде чем кто-либо еще будет добавлен в проект (но в ходе разработки время может сэкономить месяцы или даже годы!). Он следит за тем, чтобы все имело смысл и достаточно хорошо сочеталось друг с другом.
У вас есть проектные документы, как правило, на основе UML, так что разные части команды могут понять точки интеграции. Вы признаете, что все, что было сделано, может потребоваться сделать заново без людей, которые это сделали, поэтому вы документируете это.
Ваш процесс обеспечения качества становится намного более строгим, и они начинают применять правила, как будто вы проверяете только изменения, которые касаются определенных ошибок во время тестирования.
Тестирование, рефакторинг и т. Д., Очевидно, являются ключевыми и усиливаются коллегиальным и групповым обзором.
Я не говорю, что такого рода вещи всегда необходимы, очевидно, это не так, но в своем вопросе вы обсуждаете грубые основы кода, и эти передовые практики часто являются решением этой проблемы.
Обычно эти хорошие практики применяются после того, как проект GIANT полностью провалился, потому что кодовая база плохо сосет. Затем они увольняют любого, кто не может уклониться от вины, нанимают менеджеров, которые, как мы надеемся, имеют некоторый опыт работы с более крупными проектами, и (если у них нет денег) перезапускаются с нуля.
По крайней мере, это мой опыт. YMMV