First, I think guinex has a good point: consider not rewriting your codebase. Instead try refactoring your existing codebase before adding your new features. I'm guessing you're thinking about rewriting because the current codebase is becoming difficult to maintain. If you take the refactoring route, you should be able to use unit tests from the initial application to ensure that you don't regress upon refactoring or addition of new functionality.
I understand both guinex point and your expanded explanation about it. The point is, the original app was written naively with no tests in mind or any other control structure, and it has grown more than initially expected. It has served me right since then: but it is poorly written and it lacks functionality that for some reason it would be not that easy to just cram in. Thus following the disciplined approach most of you suggest, I would modify it with small incremental steps, also gradually adding tests to make sure I don't break anything step by step: I do agree that this is the most reliable way of proceeding. But it's also more work than I may want to spend on it: the original app may have not been perfect - yet my primary concern is that the new one just behaves like it when no new functionality is adopted.
As far as the actual way of rewriting goes, I'm not really sure it will be from scratch: indeed I will probably still gradually modify the existing codebase, preserving the original one apart. But to also add tests for the latter, however good in principle, would be much like duplicating the efforts. So I think I'll take a lower profile approach and leave some junk in, duly hidden under the carpet.
In reply to Re^2: Recommendations re tests wrt a reference implementation
by blazar
in thread Recommendations re tests wrt a reference implementation
by blazar
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |