Refactoring
When we finished the previous chapter, we had the classes of the Mastermind game designed and coded in a nice and perfectly object oriented way that did not break any of the OO principles. Did we? Absurd. There is no code, except some trivial examples, that cannot be made to look nicer or better. Usually, when we develop code and finish the coding, it looks great. It works, the tests all run, and documentation is ready. From the professional point of view, it really is perfect. Well, it is good enough. The big question that we have not tested yet is maintainability. What is the cost to alter the code?
That is not an easy question, especially because it is not a definite one. Alter to what? What is the modification that is to be made to the code? We do not know that when we create the code in the first place. If the modification is to fix a bug, then it is obvious that we did not know that beforehand. If we knew, we would not have introduced the bug in the first place. If this...