Да, но чаще ты не знаешь, будут ли у тебя эти 5 лет развития, и технический долг при разработке minimum viable product создается осознанно, потому что еще неизвестно, будет ли, кому его отдавать. И в этом смысле говно в трейте лучше, чем ручной копипаст говна =)Чтобы рефакторить, нужно понимать, как делать правильно, в какую сторону менять код. Более того, чтобы рефакторить, нужно чётко понимать текущие бизнес-требования, которые могут уже как-то образом быть разманы или даже утрачены (в том смысле, что никто точно не знает, какое поведение правильно), чтобы не сломать что-то. Т.е. опять-таки, всё идёт к тому, что нужно писать тесты, документирующие поведение системы (BDD), нужно уделять особое внимание бизнес-логике, модели (DDD). Я на своём опыте понимаю, что это не просто красивые слова, хотя вот относительно недавно (года 2 назад?), очень скептически относился к тому же BDD. Это становится понятно после боли в заднице от legacy кода.
Собственно, основной мой пойнт в том, что я не вижу проблемы писать больше, если это снижает риски. Написание кода — это вещь, на которую уходит меньшая часть времени в любом случае.
Особого смысла в BDD я, кстати, так и не уловил. В том смысле, что примерно то же самое я всегда, еще не зная слова BDD и называя это функциональными или интеграционными тестамт, делал phpunit-ом (да, не юнит тесты на юнит-фреймворке, и что) и до сих пор не врубаюсь, зачем нужны эти new shiny фреймворки, кроме syntax sugar.
Последнее редактирование: