One of the factors in looking at this is why are we refactoring in the first
place. One of my concerns with many proponents of lightweight methods and
refactoring (not all as I too am a proponent of refactoring and lightweight
methods) is that they don't make the distinction of why the refactoring is
needed. Refactoring to fix "code smell" to my mind is because people didn't
understand the basics of good design in the first place. To write great
code, you must write code that:
1. Runs all the tests.
2. Contains no duplication (once and only once)
3. Expresses all the ideas you want to express.
a) Do not put the implementation of unrelated ideas in the same
method.
b) Classes should organize ideas in a readily understandable way.
c) Use appropriate names so you don't have to explain method, member
or class names with additional documentation
place. One of my concerns with many proponents of lightweight methods and
refactoring (not all as I too am a proponent of refactoring and lightweight
methods) is that they don't make the distinction of why the refactoring is
needed. Refactoring to fix "code smell" to my mind is because people didn't
understand the basics of good design in the first place. To write great
code, you must write code that:
1. Runs all the tests.
2. Contains no duplication (once and only once)
3. Expresses all the ideas you want to express.
a) Do not put the implementation of unrelated ideas in the same
method.
b) Classes should organize ideas in a readily understandable way.
c) Use appropriate names so you don't have to explain method, member
or class names with additional documentation