Приходилось ли вам работать с модулями исходного кода с недокументированным поведением? Где есть неочевидные ветвления и преобразования; которые требуют всё больше затрат на каждую следующую фичу?
Поделюсь опытом, как можно распутать такое легаси — расскажу, как мы рефакторили модуль интеграции с внешним API. Разберёмся, почему стоит присмотреться к верхним слоям пирамиды тестирования, как можно генерировать тесты, а также какие идеи TDD применимы при рефакторинге. В готовом решении выделим паттерны, помогающие выстроить логичный, самодокументирующий код и избежать подводных камней, к примеру, путаницы IDшников и потери полей.