Code maintenance and good design are different tasks.
New maintenance programmers often want elegant code, leading to the "let's just redo it all" idea. That's often much harder than just getting the new feature in place.
When I add a feature to existing code I often use the sprout object (or method or function) technique:
-
read the legacy code and find where the changes will go
-
add tests around that area of the legacy code, so that
you'll more easily know if you broke something (with as little change to the legacy code as possible). This also allows you
to know what variables are involved.
This is the hardest part.
- develop the new code, using test driven methods. You feed your new code the values from the parameters found in the 2nd step. Your new code is of course elegant and
you develop it independently of the legacy code.
- alter the legacy code so that
it uses the new code. Cross your fingers and run the tests from the second step.
Then you have some tests for the legacy code and you have new elegant code with tests too.
Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
Read Where should I post X? if you're not absolutely sure you're posting in the right place.
Please read these before you post! —
Posts may use any of the Perl Monks Approved HTML tags:
- a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
| |
For: |
|
Use: |
| & | | & |
| < | | < |
| > | | > |
| [ | | [ |
| ] | | ] |
Link using PerlMonks shortcuts! What shortcuts can I use for linking?
See Writeup Formatting Tips and other pages linked from there for more info.