Programming.LegacyCode History

Hide minor edits - Show changes to output - Cancel

 
 
August 20, 2014, at 01:20 PM by MichaelPaulukonis -
Added lines 55-57:


[[http://www.wesmcclure.com/the-cost-of-dead-code-and-the-only-technique-you-need-to-know-to-clean-it-up/|The Cost of Dead Code]]
 
 
August 12, 2013, at 02:05 PM by OtherMichael -
Added lines 58-59:
[[TechnicalDebt]]
 
 
January 05, 2009, at 09:00 AM by OtherMichael - semantic links, new SO discussion
Changed lines 4-10 from:
http://www.amazon.com/Working-Effectively-Legacy-Robert-Martin/dp/0131177052
http://www.objectmentor.com/resources/articles/WorkingEffectivelyWithLegacyCode.pdf
http://markbernstein.org/Aug0501/WorkingEffectivelyWithLega.html
http://www.informit.com/podcasts/episode.aspx?e=11b5d715-2884-4b87-b9b4-86a8a5e34d6a - links to a video

->This book is infinitely valuable for *anybody* who works with code they've inherited from others dead and gone, but it's just as useful for anyone doing "greenfield" development.  After all, most of the code you write is eventually going to become someone else's legacy code - this book will help you see ways to ensure your code is testable in the first place and a great way to expand on what you've learned from [[Refactoring|Fowler's Refactoring]].  That being said, I would probably read Refactoring prior to reading this book simply to get more familiar with some of the refactorings that Feathers discusses, and *why* Feathers has such an emphasis on testable code. http://graysmatter.codivation.com/ABookThatEveryoneNeedsWorkingEffectivelyWithLegacyCode.aspx
to:
[[http://www.amazon.com/Working-Effectively-Legacy-Robert-Martin/dp/0131177052|Amazon page]]
[[
http://www.objectmentor.com/resources/articles/WorkingEffectivelyWithLegacyCode.pdf|summary article (pdf) by Feathers]]
[[
http://markbernstein.org/Aug0501/WorkingEffectivelyWithLega.html|review from Mark Bernstein]]
[[
http://www.informit.com/podcasts/episode.aspx?e=11b5d715-2884-4b87-b9b4-86a8a5e34d6a|links to a video]]

->This book is infinitely valuable for *anybody* who works with code they've inherited from others dead and gone, but it's just as useful for anyone doing "greenfield" development.  After all, most of the code you write is eventually going to become someone else's legacy code - this book will help you see ways to ensure your code is testable in the first place and a great way to expand on what you've learned from [[Refactoring|Fowler's Refactoring]].  That being said, I would probably read Refactoring prior to reading this book simply to get more familiar with some of the refactorings that Feathers discusses, and *why* Feathers has such an emphasis on testable code. [[http://graysmatter.codivation.com/ABookThatEveryoneNeedsWorkingEffectivelyWithLegacyCode.aspx|a review]]
Changed lines 18-19 from:
Legacy Code is code without tests:
to:
->'''Legacy Code is code without tests:'''
Added line 24:
Added lines 41-43:
Stack Overflow: [[http://stackoverflow.com/questions/146936/what-can-you-do-to-a-legacy-codebase-that-will-have-the-greatest-impact-on-improv|What can you do to a legacy codebase that will have the greatest impact on improving the quality?]]

Changed line 46 from:
http://www.iam.unibe.ch/~scg/OORP/ - Object-Oriented Reengineering Patterns (see also [[http://p-cos.blogspot.com/2008/06/reengineering-patterns.html|blog ref]])
to:
[[http://www.iam.unibe.ch/~scg/OORP/|Object-Oriented Reengineering Patterns]] (see also [[http://p-cos.blogspot.com/2008/06/reengineering-patterns.html|blog ref]])
 
 
June 02, 2008, at 03:24 PM by MichaelPaulukonis - Object-Oriented Reengineering Patterns
Changed lines 40-43 from:
!! Other resources
to:
!! [[#Other]] Other resources

http://www.iam.unibe.ch/~scg/OORP/ - Object-Oriented Reengineering Patterns (see also [[http://p-cos.blogspot.com/2008/06/reengineering-patterns.html|blog ref]])

 
 
May 27, 2008, at 09:10 AM by MichaelPaulukonis - maintenance programming link
Added line 47:
[[http://blogs.techrepublic.com.com/programming-and-development/?p=610&tag=nl.e055|the Challenge of Maintenance Programming]] - article at Tech Republic
 
 
May 13, 2008, at 02:29 PM by MichaelPaulukonis - code stores knowledge
Added lines 39-46:

!! Other resources
>>clip lrindent<<
->[....] '''Code stores knowledge'''; it captures the history, data, needs and hopes of the original customers in a very precise and tangible medium. It's often more trustworthy than any text or video or other formats. A lot of interpretation and guess work is still needed to understand the old code but the ability to reuse the knowledge in a very real way by linking to or modifying the old code is what makes programmers some of the most productive and valuable knowledge workers out there today. The constraints of the past provide not only a firm foundation for future work but also translate a great deal of wisdom and insight to the future. This ability to build on the past, to continually improve and refine what has come before, transforms software engineering (like science and mathematics and every other type of engineering) into a truly generative endeavor.

[[http://blogs.concedere.net:8080/blog/discipline/software+engineering/?permalink=The-Great-Legacy-of-Code.html|The Great legacy of Code]]
>><<

 
 
April 02, 2008, at 09:14 AM by MichaelPaulukonis -
Added lines 1-44:
!! Working Effectively with Legacy Code
by Michael C. Feathers

http://www.amazon.com/Working-Effectively-Legacy-Robert-Martin/dp/0131177052
http://www.objectmentor.com/resources/articles/WorkingEffectivelyWithLegacyCode.pdf
http://markbernstein.org/Aug0501/WorkingEffectivelyWithLega.html
http://www.informit.com/podcasts/episode.aspx?e=11b5d715-2884-4b87-b9b4-86a8a5e34d6a - links to a video

->This book is infinitely valuable for *anybody* who works with code they've inherited from others dead and gone, but it's just as useful for anyone doing "greenfield" development.  After all, most of the code you write is eventually going to become someone else's legacy code - this book will help you see ways to ensure your code is testable in the first place and a great way to expand on what you've learned from [[Refactoring|Fowler's Refactoring]].  That being said, I would probably read Refactoring prior to reading this book simply to get more familiar with some of the refactorings that Feathers discusses, and *why* Feathers has such an emphasis on testable code. http://graysmatter.codivation.com/ABookThatEveryoneNeedsWorkingEffectivelyWithLegacyCode.aspx

!! What is legacy code?
A: Someone else's code.
A: Bad code.
A: Difficult-to-change code that we don't understand.

Feather's extreme position:

Legacy Code is code without tests:

>>clip lrindent<<
Code without tests is bad code. It doesn't matter how well written it is; it doesn't matter how pretty or object-oriented or well-encapsulated it is. With tests, we can change the behavior of our code quickly and verifiably. Without them, we really don't know if our code is getting better or worse. ''(p. xvi)''
>><<

!! Legacy Management Strategy
By itself, '''legacy code doesn't hurt anything'''. As long as it works, '''it only becomes painful when you have to make modifications'''. Fortunately, the first steps you have to take to work effectively with legacy code also make it easier to clean things up. [emphasis added]

The general legacy management strategy is:

# Identify change points
# Find an inflection point
# Cover the inflection point
## Break external dependencies
## Break internal dependencies
## Write tests
# Make changes
# Refactor the covered code.

([[http://www.objectmentor.com/resources/articles/WorkingEffectivelyWithLegacyCode.pdf|pp 2-3]])

!! [[#SeeAlso]] See Also
[[Refactoring]]

!! [[#Categories]] Category tags
[[!Programming]] [[!books]] [[!refactoring]]