That’s not my experience. I find in carefully typed projects I can do pretty large refactors with high confidence that once the types are correct again, a lot of tests will pass, and a lot of behavior will work.
It’s not that there aren’t bugs, but I have a high degree of confidence after fixing a small number of bugs that the overall system has a high degree of correctness.
There are several things that go into this
- good types
- good tests
- good interfaces between modules
All three I think give me a big jump in how quickly and confidently I can refactor.