Dr. Dobb's is part of the Informa Tech Division of Informa PLC

This site is operated by a business or businesses owned by Informa PLC and all copyright resides with them. Informa PLC's registered office is 5 Howick Place, London SW1P 1WG. Registered in England and Wales. Number 8860726.

Channels ▼

Developer Reading List

, February 25, 2014 Java 8, JavaScript, Functional Programming, and Software Engineering
  • E-mail
  • Print

Quality Code

by Stephen Vance

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.

Currently we allow the following HTML tags in comments:

Single tags

These tags can be used alone and don't need an ending tag.

<br> Defines a single line break

<hr> Defines a horizontal line

Matching tags

These require an ending tag - e.g. <i>italic text</i>

<a> Defines an anchor

<b> Defines bold text

<big> Defines big text

<blockquote> Defines a long quotation

<caption> Defines a table caption

<cite> Defines a citation

<code> Defines computer code text

<em> Defines emphasized text

<fieldset> Defines a border around elements in a form

<h1> This is heading 1

<h2> This is heading 2

<h3> This is heading 3

<h4> This is heading 4

<h5> This is heading 5

<h6> This is heading 6

<i> Defines italic text

<p> Defines a paragraph

<pre> Defines preformatted text

<q> Defines a short quotation

<samp> Defines sample computer code text

<small> Defines small text

<span> Defines a section in a document

<s> Defines strikethrough text

<strike> Defines strikethrough text

<strong> Defines strong text

<sub> Defines subscripted text

<sup> Defines superscripted text

<u> Defines underlined text

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.

Disqus Tips To upload an avatar photo, first complete your Disqus profile. | View the list of supported HTML tags you can use to style comments. | Please read our commenting policy.