tagged by: refactoring boundary
Is changing the interface of part of the code a refactoring?
Is it a refactoring to change the order of declarations, eg methods and fields in a Java program?
Here's an interesting conundrum posed by Przemyslaw Pokrywka. One of the refactorings in the book is Introduce Null Object - a very useful refactoring (also discussed in Josh's new book.) Przemyslaw's point is that this refactoring can alter behavior. If you have a method return a null, and you invoke a method on that null you'll get a null pointer exception. If you use a Null Object you'll get some default behavior.
If you make a change to improve the performance of a program, is this a refactoring?