I agree being consistent is a good thing - however, design and coding principles are also important:
I maintained a multi-tiered app which uses a business framework and has a business logic layer. In this app, every single screen that allowed you to edit an object followed the same principle...
Save - saves the changes or applies the edits if you are editing a child object, Cancel - cancels the changes and discards the object, or rolls back the changes if you are editing a child object
Of course, even though the same functionality was required and the same functionality appeared to be used, it turned out that every form was a copy/paste of the base class and didn't actually inherit from it. This meant that I had two choices -
- Apply the changes to all objects each time I make a change and hope that I don't miss any
- Modify all objects to inherit from the base class and then only make one change
Although the second method took a bit longer at first, the payoff was worth it. I made changes to the way the form has worked a few times to fine tune the logic, and now I've not had to touch it for a long time. Any new forms which require this functionality need one line modifying before they work 'out of the box'.
The principles of good design and understanding of the tools are way more important than which tools you use. It's still perfectly possible to mess up an application (that I have to fix!) using great tools - this being a perfect example.