I’ve always thought of code refactoring as only improving implementation details. I want to make sure I have the appropriate understanding of the scope to which refactoring applies (Wikipedia didn’t help me much to understand this).
For example, I hear people talking about “refactoring their designs”, which seems paradox. When you modify the design of something (rename a public method in a class, remove a method, or other similar changes) this (to me) is called “redesign”, not refactoring.
What is the common accepted scope of refactoring? Is it really possible to refactor designs? Knowing this will really help communication with co-workers when I’m trying to describe work I’m doing as refactoring or not.
Refactoring can be applied to a design as well as well as code, when you work with the existing design of the system to make improvements to it, either to improve readability, clarity, or make it easier to add new features in the future.
Regardless of if you are applying refactoring to design or code, the idea is the same. You maintain the existing functionality (you don’t add or remove capabilities of the system) yet produce something that’s easier to work with in the end.