On Mar 13, 2008, at 10:54 PM, Bryce Harrington wrote:
Now, architectural reworkings can often risk incur massive breakages
since fundamental pieces of the code are being changed. In order to
minimize this, I'd like to suggest the following principles:
* Always keep the tree buildable
* Do major refactorings in small steps
* Hold code review parties with 2-3 others to brainstorm
* Drop copied-in codebases in favor of external dependencies
* Make sure every function you touch has some doxygen comments
I think you missed one key point.
We need to get the unit test passing and updated.
Although some fails are not too hard to fix, but there are a few that are probably critical. I recall that at least one is due to one of our core string-enum-string round trips is failing. For that one we might need to change a core assumption and approach.
I think that getting them working and keeping them working is probably only second to "Always keep the tree buildable". If we can have unit tests working and added to, then most of the other problems can be reduced.
One other way to describe this is...
Before we start climbing up the front of the building to start tearing down the facade, let's make sure we have a scaffolding up and bolted solidly together instead of just leaning out from the window ledges.
:-)