🔥

Тред (@bespoyasov)


@jsunderhood А можешь рассказать, как это должно работать? Я поняла концепт TDD, когда работаешь с нуля, а вот как с ним быть, когда у тебя оттакенный кусок запутанного старья, которое надо привести в приличный вид?
Да ^_^ Если приходится писать тесты для махрового легаси, которое писали до вас, то советую посмотреть на книжку Физерса «Эффективная работа с легаси»: bespoyasov.ru/blog/working-e… Чуть подробнее сегодня писал вот тут: twitter.com/jsunderhood/st… twitter.com/nat_davydova/s…

Он предлагает искать швы — места, в которых можно относительно безопасно «распилить» комбайн на части. Покрыть швы тестами, а уже потом начинать рефакторинг. Обычно шов — это место, где мы можем заменить одно поведение другим: месте соединения модулей.

В хорошо написанном коде такие места выделены явно, потому что модули слабо зацеплены. Представьте, где именно вы бы разделили систему на несколько частей (по смыслу, по поведению, по зависимостям) — там и будет шов.

В книжке много техник, как работать с кодом, когда вы уже определились со швом. Типа, как заменить зависимость: - одну зависимость за раз; - определить, какую зависимость хотим поменять; - покрыть шов тестами; - вынести текущий код в отдельный класс; - заменить класс на другой.