Why does ReSharper default to "refactoring" usages in strings?

Why does ReSharper default to "refactoring" usages in strings?   This completely goes against everything that we've been led to expect from the very earliest days of IntelliJ, namely:  Refactoring cannot, must not, shall not, ever break your code.   Since it is categorically impossible to apply that rubric when "refactoring" strings, you are rolling the dice every single time you have that check box checked that ReSharper will not break your code.  Even worse, when I uncheck that blasted checkbox, it never remembers.  I have to uncheck it each and every time I rename anything.  

It goes so far that I often avoid using ReSharper to rename things unless it's going to involve a lot of changes because I never, ever want to enable this feature.   It has happened to me on numerous occasions that I forget to uncheck that box, change the contents of strings in my project willy-nilly, only to uncover a bug due to that "refactoring" months later.  

Please don't get me wrong, I think ReSharper is a fantastic product!  I find it utterly indispensible.  But this behavior absolutely kills me.  Will someone have mercy on me and explain either how ReSharper will make it easier to opt-out of unreliable string "refactorings" or give me hope that this will be addressed in the future?

Please sign in to leave a comment.