Я тут решил немного пет-проджект порефакторить. Ручной dependency injection стал адски громоздким, решил заюзать DI-container (выбрал ubeg/dig
, если кому интересно). 20 minutes adventure, in and out. В итоге рефакторинг растянулся на два ночера, затронул 66 файлов из 200. Удивительно, что из 8 часов (трекинг примерный) на фиксинг внесённых багов ушло всего три, из них полтора - на первый, дальше стало проще. Ну и в кои-то веки пригодился встроенный в Goland дебаггер)
Порадовало, как следование одним принципам чистоты кода заставляет использовать другие. Например очень понятно стало, почему конструктор должен только создавать объект и инициализировать значения по умолчанию. Понятно стало, почему синглтоны - это плохая практика, но создавать один экземпляр класса и передавать его повсюду - хорошая, ну и вообще лучше передавать объекты по ссылке, а не по значению.