In any object oriented project there is usually a base class - an interface and derived objects implementing that interface.
Let's take the classic example, Shape with virtual draw method. Circle and Rectangle are derived from it.
class Shape {
virtual void draw() {}
};
class Rectangle : public Shape {
void draw() {impl}
}
class Circle : public Shape {
void draw() {impl}
}
Right now when invoking rename over the draw function in Shape class, visual assist will also rename the function in each derived class (even though one might prefer having a check box for that?).
But changing the method signature will only affect the Shape class. So we need to go through each derived class and modify the signature for the draw method again and again.
I would like to request adding a check box "Modify in derived classes" that would automatically change the signature of the overriden methods in the derived classes as well. If rename can do it, why can't change signature?
The same goes for the addition of new member functions. What if we want to add a new function to the Shape interface? We will then need to again add signature and implementation for that function in each derived class manually.
Also it would be nice to be able to remove functions from the base classes so that they are also deleted from every derived class (including the implementation).
I think this set of additions will totally remove the fear of refactoring interfaces in our code :)