1. Писать тесты нужно, начиная с самой короткой ветки кода (минимум вложенности), а рефакторить - начиная с самой длинной или более глубоко вложенной. Источник: https://www.youtube.com/watch?v=_NnElPO5BU0, Sandro Mancuso “Testing and refactoring legacy code”.
  2. Юнит-тесты, написанные на плохой дизайн, “цементируют” его, поэтому нужно рефакторить в процессе написания тестов, не останавливаться просто на достижении 100% покрытия тестами.
  3. Модель шва Эффективная работа с унаследованным кодом - важный инструмент для обеспечения тестируемости класса.