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.
Kerievsky lays the foundation for maximizing the use of design patterns by helping the reader view them in the context of refactorings. He ties together two of the most popular methods in software engineering today--refactoring and design patterns--as he helps the experienced developer create more robust software.
The NetBeans Platform is the world's only modular Swing application framework, used by very large organizations in mission-critical scenarios, such as at Boeing and Northrop Grumman, as well as in the financial sector and in the oil/gas industry. For these large customers in enterprises who are increasingly interested in Maven and OSGi, the book will have particular relevance. The Definitive Guide to NetBeans™ Platform 7 is a thorough and authoritative introduction to the open-source NetBeans Platform, covering all its major APIs in detail, with relevant code examples used throughout. Provides a completely updated definitive guide to the NetBeans Platform, using the latest APIs, coding patterns, and methodologies. Focuses strongly on business features in an application, since Oracle's customers are particularly interested in business-related aspects. For example, how to use OSGi, how to add authentication/security, how to monetize from a modular application. The original German book on which this title is based was well received. The NetBeans Platform Community has put together this English translation, which covers the latest NetBeans Platform 7 APIs. With an introduction by known NetBeans Platform experts Jaroslav Tulach and Tim Boudreau, this is the most up-to-date book on this topic at the moment. All NetBeans Platform developers will gain something from this book, because several topics in the book have not been documented anywhere else. What you’ll learn How to get started using the NetBeans Platform with or without using NetBeans IDE. How to set up a modular application, using either Ant or Maven as a build system. How to get acquainted with all the NetBeans Platform's APIs. How to work with the Visual Library as a very popular and powerful widget library, covering all its features in detail. How to model an application in OSGi/EMF and using the model in an application on the NetBeans Platform. How to distribute a modular application, focusing on different strategies for monetizing from its modular architecture. Who this book is for The Definitive Guide to NetBeans™ Platform 7 is for large enterprises who are not interested in reinventing the wheel whenever they create a new applications, and open source communities who typically benefit from a modular architecture, because a plugin system (as provided by the NetBeans Platform) simplifies how contributions can be made to a project. Table of Contents Introduction Structure of the NetBeans Platform The NetBeans Module System The OSGi Framework Lookup Concept Actions Data and Files Tips and Tricks Menubar and Toolbar Window System Statusbar and Progressbar Nodes and Explorer Dialogs and Wizards Visual Library Tips and Tricks Help System Output Window Navigator Properties Options and Settings Palette Palette API Tasklist API Quick Search API Auto Update Services API Java DB Hibernate Java Persistence API MySQL and EclipseLink Web Services Java Beans (JEE) RESTful Web Services Authentication and Multi-User Login Internalization and Localization Branding and Packaging Update of a NetBeans Platform Application Maven and the NetBeans Platform Eclipse IDE and the NetBeans Platform From Eclipse to NetBeans IntelliJ IDEA and the NetBeans Platform NetBeans Swing GUI Builder Testing NetBeans Platform Applications Debugging with the NetBeans DIE MP3 Manager Appendix