How we did it:
For any feedback, any questions, any notes or just for chat - feel free to follow us on social networks
Michael C. Feathers
The average book on Agile software development describes a fairyland of greenfield projects, with wall-to-wall tests that run after every few edits, and clean & simple source code.
The average software project, in our industry, was written under some aspect of code-and-fix, and without automated unit tests. And we can't just throw this code away; it represents a significant effort debugging and maintaining. It contains many latent requirements decisions. Just as Agile processes are incremental, Agile adoption must be incremental too. No more throwing away code just because it looked at us funny.
Mike begins his book with a very diplomatic definition of "Legacy". I'l skip ahead to the undiplomatic version: Legacy code is code without unit tests.
Before cleaning that code up, and before adding new features and removing bugs, such code must be de-legacified. It needs unit tests.
To add unit tests, you must change the code. To change the code, you need unit tests to show how safe your change was.
The core of the book is a cookbook of recipes to conduct various careful attacks. Each presents a particular problem, and a relatively safe way to migrate the code towards tests.
Code undergoing this migration will begin to experience the benefits of unit tests, and these benefits will incrementally make new tests easier to write. These efforts will make aspects of a legacy codebase easy to change.
It's an unfortunate commentary on the state of our programming industry how much we need this book.
Presents programming techniques using the common language runtime of Microsoft .NET Framework.
Stephen R.G. Fraser
Fraser pens a resource about writing .NET applications using C++/CLI. While readers are learning the ins and outs of .NET application development, they will also be learning the syntax of C++, both old and new to .NET. Readers will also gain a good understanding of the .NET architecture.
Foundations of C++/CLI: The Visual C++ Language for .NET 3.5 introduces C++/CLI, Microsoft's extensions to the C++ syntax that allow you to target the common language runtime, the key to the heart of the .NET Framework 3.5. This book gives you a small, fast–paced primer that will kick–start your journey into the world of C++/CLI. In 13 no–fluff chapters, Microsoft insiders take readers into the core of the C++/CLI language and explain both how the language elements work and how Microsoft intends them to be used. This book is a beginner's guide, but it assumes a familiarity with programming basics. And it concentrates on explaining the aspects of C++/CLI that make it the most powerful and fun language of the .NET Framework. As such, this book is ideal if you're thinking of migrating to C++/CLI from another language. By the end of this book, you'll have a thorough grounding in the core language elements together with the confidence to explore further that comes from a solid understanding of a language's syntax and grammar.