Developer Reading List

Quality Code is well written, informative, and extremely frustrating. The contents are clear, the examples are well thought through, and the explanations and recommendations are sensible. And given that is fairly short (191 pages), this volume will be a useful and enjoyable resource for readers looking to improve their code by enhancing its testability.

The frustration is the general viewpoint taken by the author: that code quality is defined primarily by the testability of the code. While testability is certain an important element, it is by no means the only measure of code quality. Even though the author briefly touches on concision, separation of concerns, refactoring, and other techniques, these are all distinctly secondary to his overarching focus on testing. Predictably, the focus on testing leads Vance to advocate TDD, which is the main theme of the book. His reasons for jumping from testability to TDD are entirely subjective, and in this choice, he never considers any other possibility. Code reviews and static checking tools, which are used pervasively in situations where code quality can have life-or-death consequences, are mentioned quickly and only in passing. Writing code to make it easier to test with static tools never comes up as a topic. In addition, the author focuses on Java and JavaScript and seems essentially unaware of features in other languages that help drive quality. To wit, he never mentions the concept of contracts (that is, design by contracts), which has been shown repeatedly to be effective in detecting subtle errors in code and is simple to implement in Java.

Finally, the author seems unaware that the field of software engineering's principal mission centers on the very topic he aims to cover. Because of this, none of his claims are backed up with any data, nor is there any support for his assertions and recommendations except his own experience, which seems limited to bread-and-butter business programming.

This book should have been entitled "Writing Better Code with TDD" or something of the sort. Then, the fact that it's just one person's view of his experience in writing good testable code would be clear. If you come to the book with that expectation, however, you will indeed find a useful, informative volume.

Dr. Dobb's encourages readers to engage in spirited, healthy debate, including taking us to task.
However, Dr. Dobb's moderates all comments posted to our site, and reserves the right to modify or remove any content that it determines to be derogatory, offensive, inflammatory, vulgar, irrelevant/off-topic, racist or obvious marketing or spam. Dr. Dobb's further reserves the right to disable the profile of any commenter participating in said activities.