Clean Code: A Handbook of Agile Software Craftsmanship
by Robert C. Martin
Test Driven Development: By Example
by Kent Beck
Refactoring: Improving the Design of Existing Code
by Martin Fowler; Kent Beck; John Brant; William Opdyke; Don Roberts
xUnit Test Patterns: Refactoring Test Code
by Gerard Meszaros
The Art of Unit Testing: with Examples in .NET
by Roy Osherove
Clean Code: A Handbook of Agile Software Craftsmanship
by Robert C. Martin
CMMI®: Guidelines for Process Integration and Product Improvement, Second Edition
by Mary Beth Chrissis; Mike Konrad; Sandy Shrum
Stand Back and Deliver: Accelerating Business Agility
by Pollyanna Pixton; Niel Nickolaisen; Todd Little; Kent McDonald
Get more out of your legacy systems: more performance, functionality, reliability, and manageability
Is your code easy to change? Can you get nearly instantaneous feedback when you do change it? Do you understand it? If the answer to any of these questions is no, you have legacy code, and it is draining time and money away from your development efforts.
In this book, Michael Feathers offers start-to-finish strategies for working more effectively with large, untested legacy code bases. This book draws on material Michael created for his renowned Object Mentor seminars: techniques Michael has used in mentoring to help hundreds of developers, technical managers, and testers bring their legacy systems under control.
The topics covered include
Understanding the mechanics of software change: adding features, fixing bugs, improving design, optimizing performance
Getting legacy code into a test harness
Writing tests that protect you against introducing new problems
Techniques that can be used with any language or platform—with examples in Java, C++, C, and C#
Accurately identifying where code changes need to be made
Coping with legacy systems that aren't object-oriented
Handling applications that don't seem to have any structure
This book also includes a catalog of twenty-four dependency-breaking techniques that help you work with program elements in isolation and make safer changes.
© Copyright Pearson Education. All rights reserved.
Average Amazon.com® Rating: ![]()
![]()
![]()
![]()
Based on 30 Ratings
Classic, Timeless Book for Techniques To Bring Your Legacy Systems Under Control - 2009-10-19
Reviewer Rating: ![]()
![]()
![]()
![]()
![]()
This was one of those famous, timeless books (like Code Complete) that I had heard many people talk about, and I finally read it. To be honest it was in my Amazon "Wish List" for several months before I ordered it, but it lived up to the hype.
Remember when you first started writing software? Like most people, for me it was a very exciting time and I truly enjoyed learning and trying to push the boundaries of programming. It is a very primal passion that engulfed me, and it is the reason many of us got into this industry. Where did that go? Do you still feel that today? If so, you are one of the lucky ones. In this book, Michael explains how large code bases (that don't have tests around them) can sometimes suck that enjoyment out of our day-to-day tasks, because we slowly develop a fear making changes to this monolithic application because we are worried about what we might break or what expected side-effects fixing a bug or adding a new feature might have. Although we might not typically acknowledge this fear, it is present whether we admit it or not.
Sometimes we romanticize the idea of working on "Greenfield" projects, because if we were just able to start from scratch ... this would be much easier and a lot more fun. I have slowly become convinced that isn't the case. There is tedious and unexpected ripples in new projects just like existing projects. This book is dedicated to given practical techniques to remove that fear, and get to a place where you can actually enjoy working in your code base. It is possible, and Michael has the experience and expertise to help you bring your legacy systems under control.
I often am weary that books like this that are on "hot" topics like test-driven-development are fluff, and aren't very relevant to my day-to-day real-world code. Not true ... at least not on this book. I would highly recommend this to book to anyone. It is worth the money, time, and effort to read it cover-to-cover. This is probably in my top 5 for technology books in terms of real-world value they provide.
To read the full review or find more reviews for technical books, visit [...]
Best Software Book I've Read - 2009-07-31
Reviewer Rating: ![]()
![]()
![]()
![]()
![]()
I have read many books by the most respected names in software development. This book is probably the best software development book that I have ever read. The advice is very practical. Anyone developing software should consider this a must-read.
The recipes will help you get your system under test. Once you have good test coverage, you will be able to modify the structure of your code without worrying that you are breaking something. You will also find yourself more productive writing new code if you can follow the advice and principles laid out in this book.
You will not regret purchasing this book.
Essential reading to sharpen your tools - 2009-05-21
Reviewer Rating: ![]()
![]()
![]()
![]()
![]()
This is a must-read for software engineers. It clarifies some powerful techniques for bridging the gap between legacy (test-less and/or untestable) code and fresh, testable code. And BTW legacy doesn't necessarily mean somebody else's code, it could be code you wrote last week.
Great book - 2009-03-16
Reviewer Rating: ![]()
![]()
![]()
![]()
![]()
Excellent book helping you to handle legacy systems. Gave me a lot of ideas on how to go on with the system I am working on. Only complaint I have is that it does not discuss legacy systems where you might need to a relational model already containing production data.
Foundational Knowledge Most Lack for the Average Developer - 2009-02-18
Reviewer Rating: ![]()
![]()
![]()
![]()
![]()
Quite simply you cannot afford to be lacking this knowledge as it is simply standard in software organizations where success is not something taken lightly.
Top Level Categories:
Software Engineering
Sub-Categories:
Software Engineering > Process
Some information on this page was provided using data from Amazon.com®. View at Amazon >