Code Quality: The Open Source Perspective
Diomidis Spinellis' first book, Code Reading, showed programmers how to understand and modify key functional properties of software. Code Quality focuses on non-functional properties, demonstrating how to meet such critical requirements as reliability, security, portability, and maintainability, as well as efficiency in time and space.
Spinellis draws on hundreds of examples from open source projects--such as the Apache web and application servers, the BSD Unix systems, and the HSQLDB Java database--to illustrate concepts and techniques that every professional software developer will be able to appreciate and apply immediately.
Review By: Daniel J. Luciano
05/03/2007Code Quality by Diomidis Spinellis is a sequel to his first book, Code Reading. Code Quality focuses on read code to determine the quality--or lack of quality--in code. By reading code that displays certain quality attributes, Spinellis says, the code reader will become more aware of how to implement quality in his own code.
The book is composed of nine chapters, each dealing with a particular area of code quality. Chapters cover topics in code quality dealing with reliability, security, time performance, space performance, portability, maintainability, and floating-point arithmetic. They can be read in any order, so the reader can read what appeals to him first and read the other chapters later. Every chapter has an abundant amount of coding examples written mostly in C and Java. The examples are from real-world open source projects. All of the code can be downloaded from the book’s Web site or the CD-ROM included with Spinelli’s first book, if you have it. The text and code examples are supplemented with numerous charts, graphs, and tables. Every chapter ends with a “further reading” section to enhance the reader’s understanding.
This is an excellent book. I found it enjoyable to read, and all of the examples are clear. I would have liked to see more examples using object-oriented languages like C#. My favorite chapter was the one on maintainability, which is also the longest chapter in the book. I agree with the author that there is not enough training in the software development field that makes use of the reading of code as a way to learn about software development. I can see this book being used as a textbook for a college level course in software. It is full of practical real-world advice about thinking about code quality.
This book will make you look at the code that you write in a different way. The topic of code quality is very important in the field of software development. The exercises, further reading section, and the advice to take home section help reinforce the topics covered in each chapter. This is a book that everyone involved with writing code should read.
This is an excellent book on the topic of code quality using real-world examples. The book contains numerous graphs, charts, and tables to assist the reader in understanding the material. It is a book every developer should have as a part of his library.