Какие техники можно использовать чтобы по мере роста проекта не падала скорость написания нового кода?

Я пишу свой проект по SOLID принципам. По меркам коммерческих не особо большой, но в котором уже около 12000 строк кода. Поскольку в проекте много зависимостей - то с каждой новой функцией находить и исправлять баги становится все сложнее и как следствие дольше.

Для большей ясности приведу пример последнего исправления. У меня веб приложение, которое сохраняет и группирует по многим показателям введенную пользователем информацию.

Изначально планировалось выводить при загрузке страницы информацию из последней записи которую СОЗДАЛ ПОЛЬЗОВАТЕЛЬ - в голове все выглядело прекрасно, реализовал задумку, посмотрел на нее, понял что пользоваться этим не удобно и было бы лучше выводить информацию из последней записи которую ПОЛЬЗОВАТЕЛЬ ОТКРЫВАЛ.

Так как сначала вывод информации был для последней записи которую СОЗДАЛ пользователь и на сайте есть возможность переключаться между записями - информацию о записи я сохранял собственно в саму запись, а эти записи добавлял в конец массива. Естественно поскольку записи сохраняются в массиве в том порядке в котором они были созданы - выводил я их с конца массива. Выглядело это примерно так

введите сюда описание изображения

Как видно зеленым цветом выделена запись полученная с конца массива, а в основном окне ее содержимое. Обращаю внимание что данные до начала исправлений сохранялись в МАССИВ.

Начал делать так чтобы информация выводилась с последней ОТКРЫТОЙ пользователем записи. Понял что для учета какой именно список был открыт нужно знать его id. Поскольку id создавался через MySQL-евский AUTO_INCREMENT, а записи пользователь может удалить, из-за чего id будет утерян навсегда - сохранять данные для последующего вывода приходится не в МАССИВ, а в ОБЪЕКТ ключами которого будут эти самые id записей.

Вот тут и началось веселье. Весь функционал на клиенте, как и формирование страницы на сервере было написано под работу с МАССИВОМ. А теперь его везде нужно было переписать под работу с ОБЪЕКТАМИ. В небольшом проекте исправить подобное несложно, но в моем случае какие-то функции были написаны более 2 месяцев назад, о которых я уже почти ничего не помнил. Ни названий, ни мест где я их подключал (за исключением логического определения по названию классов и папок).

Вопрос: Как в ситуациях где много зависимостей можно быстро исправлять баги? Норма ли ситуации, на подобие той что я описал выше?

P.S. Один из вариантов сильно помогший в этом - менять свойства классов только посредством вызова соответствующей функции изменяющей это свойство, чтобы по стеку вызовов определить связанные с этим функционалом методы.


Ответы (0 шт):