PRODUCT SUPPORT ANNOUNCEMENT
See the latest about COVID-19 shipping availability and video/Web Edition load errors. Learn more.
This eBook includes the following formats, accessible from your Account page after purchase:
EPUB The open industry format known for its reflowable content and usability on supported mobile devices.
MOBI The eBook format compatible with the Amazon Kindle and Amazon Kindle applications.
PDF The popular standard, used most often with the free Adobe® Reader® software.
This eBook requires no passwords or activation to read. We customize your eBook by discreetly watermarking it with your name, making it uniquely yours.
Also available in other formats.
Register your product to gain access to bonus material or receive a coupon.
If you are a programmer, you need this book.
You may read code because you have to--to fix it, inspect it, or improve it. You may read code the way an engineer examines a machine--to discover what makes it tick. Or you may read code because you are scavenging--looking for material to reuse.
Code-reading requires its own set of skills, and the ability to determine which technique you use when is crucial. In this indispensable book, Diomidis Spinellis uses more than 600 real-world examples to show you how to identify good (and bad) code: how to read it, what to look for, and how to use this knowledge to improve your own code.
Fact: If you make a habit of reading good code, you will write better code yourself.
Download the complete source code base (134 MB) for the book: Code Reading: The Open Source Perspective.
Why and How to Read Code.
Code as Literature.
Code as Exemplar.
How to Read this Book.
The Great Language Debate.
A Complete Program.
Functions and Global Variables.
While, Conditions, Blocks.
Character and Boolean Expressions.
Refactoring in the Small.
Do, Integer Expressions.
Control Structures Revisited.
Linked Data Structures.
Dynamic Allocation of Data Structures.
Call by Reference.
Data Element Access.
Arrays as Arguments and Results.
Pointer as an Alias.
Pointers and Strings.
Direct Memory Access.
Grouping Together Data Elements.
Returning Multiple Data Elements from a Function.
Mapping the Organization of Data.
Programming in an Object-Oriented Fashion.
Efficient Use of Storage.
Accessing Different Internal Representations.
Dynamic Memory Allocation.
Managing Free Memory.
Structures with Dynamically-Allocated Arrays.
Matrix and Table.
Hardware and Software Parallelism.
Design and Implementation Techniques.
The Build Process and Makefiles.
File Names and Organization.
Additional Documentation Sources.
Common Open-Source Documentation Formats.
Centralized Repository and Distributed Approaches.
Abstract Data Type.
Process and Filter.
The Editor as a Code Browser.
Code Searching With Grep.
Locating File Differences.
Roll your Own Tool.
The Compiler as a Code-Reading Tool.
Code Browsers and Beautifiers.
Testing and Debugging.