Safer C

is an excellent book by Les Hatton. As usual I'm going to quote from a few pages:
A central and hard-earned engineering principle in older engineering areas such as mechanical engineering and civil engineering is that simplicity rules.
The way to improve seems to be to master one thing at a time by doing a lot of it until quality naturally emerges.
Quality is not a flag in the company car park.
This book will argue forcibly that there is a property of software which experienced programmers can identify with quality without knowing the function of the software.
The more art is controlled, limited, worked over, the more it is free. [Igot Stravinksy]
Early versions of a number of Beethoven's pieces exist and give strong evidence of being written by a mere mortal; indeed, some are extraordinarily naive. Greatness emerged only after considerable refinement.
a profoundly important step in the maturity of a discipline is the enforcement of hard-learned previous experience and the recognition that complexity must be strictly controlled to that which necessary and no more.
A human programmer reads a programming language just as a compiler does. Therefore, languages that are difficult to write compilers for are likely to be difficult to read if those features that cause difficulty are used.
the content is more important than the style.
The author has always believed, however, that if something is statically detectable and therefore easily removeable, but likely to fail only once in the lifetime of the galaxy, it should be removed, because that occurrence might be next week and might kill someone. If its presence is known and its implications understood, it may well be negligent in the eyes of the law to leave it.
You can't test quality into software.