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 for a few 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 of altering the code?
That is not an easy question, especially because it is not a definite one. Alter to what? What is the modification we want to make? 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...