It is still a sad reality, that many software development projects are in a very bad condition. The code is of poor quality! That does not necessarily mean that the code is not working correctly. Its external quality, measured by the quality assurance department using blackbox-, user- or acceptance tests, can be very high. It can pass the QA without complaints, and the test report says that they find nothing wrong.
Also users of the software may be very satisfied and happy, and its development has been completed in time and budget (…which is rare, I know). Everything seems to be fine … really everything?
The consequences of owning a mess
Nevertheless, the internal quality of this code can be very poor. It can be a big mess. The code is difficult to understand and horrible to maintain and extend. “Never touch a running system” is a statement that is frequently heard in such kind of projects. Developers get afraid if they must change anything, or if they need to add new features.
And the cost of owning a mess can be very high. The whole thing ends up in an expensive maintenance nightmare, and it can bring a development organization in serious trouble.
If developers don’t take care about their code, they can produce a large, messy and unmaintainable beast in any programming language. However, it seems to be that particular C++ projects are prone for mess and tend more than others to slip off into a bad state. Lots of C++ code that is written today looks as if it were written in the 1980s.
It seems to be that C++ developers have been forgotten by those who preach the Software Craftsmanship attitude and Clean Code principles. Even the World Wide Web is full of bad, but apparently very fast and highly optimized C++ code examples, with a cruel syntax and completely ignoring elementary principles for good design and well-written code.
Who this book is for?
But don’t lose heart! Even with C++ code can be written clean.
This book is a must for any C++ developer and software engineer with an interest in producing better code. If you want to teach yourself about writing clean C++, this book is for you. It is written to help C++ developers of all skill levels and shows by example how to write understandable, flexible, maintainable and efficient C++ code. Even if you are a seasoned C++ developer, there are some nuggets and data points in this book that I think you will find useful in your work.