Test-Driven Development: A Practical Guide
David Astels (Prentice Hall PTR, 2003)
“This award isn’t just for me. It’s for all the people who have been talking about Test-Driven Development and its benefits, and mostly for those who contributed material to the book in areas where they’re the experts.”
This book describes in exquisite detail techniques and tools used in Test-Driven Development (TDD)—and it accomplishes the task in a friendly, readable style.
Test-Driven Development: A Practical Guide uses Java (and JUnit) for all the examples in the text. Appendices outline how to use TDD with Ruby, Smalltalk, C++, .NET, Python and Visual Basic.
Best of all, the book addresses two of the difficult areas of TDD. Testing one class often requires the services of another, but it can be tricky and time-consuming to set up the supporting class correctly. TDD advocates creating mock testing classes, which generate the expected return value for each expected set of input values. Further, Astels introduces us to the MockObjects Framework, the MockMaker and EasyMock tools.
Another difficult area is GUI testing. Here, Astels recommends the Jemmy tool or developing an Ultra-Thin GUI. Jemmy wraps an “operator” object around existing Swing components, allowing you to manipulate the GUI components through code, as if the code were a user. The Ultra-Thin GUI accomplishes almost the same thing. In this case, the GUI is so thin that the GUI is “tested” by testing the layer immediately below it.
The book ends with a detailed example of a project, demonstrating and explaining each incremental test and the code to go with it. Altogether, Test-Driven Development: A Practical Guide is thorough, clear and relevant to our main job: coding.
About Face 2.0: The Essentials of Interaction Design
Offering advice on matters of posture, consideration, appearance and behavior, About Face 2.0 is to software developers what Emily Post’s Etiquette is to debutantes. Cooper and Reimann’s pragmatic bible is applicable no matter what technological fork you use, and should be required reading for any aspiring developer making his foray into polite software society.
The authors question interaction design practices that have become the de facto standard by virtue of ubiquity, and encourage developers to think outside the Microsoft box. Developers may be surprised to learn that getting their applications to work is only the beginning. About Face 2.0 provides developers with the techniques to give their applications a virtual makeover.
Agile Database Techniques: Effective Strategies for the Agile Software
This isn’t some lofty tome about crafting perfect schema in idyllic
academia; it’s about building quality, high-performance enterprise applications
in the realm of troll-like data architects, verdigris-encrusted legacy databases
and constantly changing requirements. Ambler provides hardnosed advice and
specific guidelines drawn from his own experience, with a ruthless disregard
for anything that doesn’t advance the task at hand. (Hear ye the man
who championed 3x5 index cards for an honorary Jolt Award: “Models and
documents don’t need to be perfect; they just need to be barely good
Code Reading: The Open Source Perspective
Most programming books, says author Diomidis Spinellis, teach us how to program, but we actually spend more of our time reading code others have written so that we can understand and perhaps modify it. That insight led Spinellis to mine the NetBSD Unix distribution and other open source software (OSS) projects for real-world examples that illustrate techniques for identifying good—as well as bad—code. It’s one thing to learn from toy examples, and quite another to learn from OSS project code that has improved through multiple revisions. But to identify good code, first you have to read it, and Spinellis shows us how to—efficiently. Ultimately, from reading others’ code, we learn to write better code ourselves.