Mike and Phani's Essential C++ Techniques, by Michael Hyman and Phani Vaddadi, is a book in two parts. The first part consists of C++ maxims labeled. The second part consists of a few more complete examples that apparently resisted coercion into the form employed in the first part of the book.
The examples and samples in Mike and Phani's Essential C++ Techniques are instructive, but so are the flaws of this book. Let's examine these flaws in a fashion similar to the book itself:
Flaw 1: It's Been Done Before and Better
Category: Original Thinking
If imitation is the sincerest form of flattery, Scott Meyers is blushing.
Caveat: Sometimes it is best to wait until you have an original idea before writing and publishing a book.
Flaw 2: Save a Tree
Category: Social responsibility of the computer publishing industry
The formatting of the examples in Mike and Phani's Essential C++ Techniques is ostentatiously vertical. The advantage is that the page count is stretched and the book grabs more shelf millimeters. The disadvantage is that you might remember that Mike Hyman is also the author of Visual C++ for Dummies, and thus begin to wonder what Hyman takes you for in the current tome.
Caveat: You may be a technological newbie, but you can still probably recognize watered soup when you taste it.
Flaw 3: Wintel, Wintel Everywhere
Category: Epistemological
Most of the code in Mike and Phani's Essential C++ Techniques, though conforming to the quaint and mediocre conventions of Redmond, is not Microsoft Visual C++-specific. Enough of it is, however, that this should have been signified on the book cover, or at least in the introduction.
In fact, the examples on the CD-ROM are all set up for Visual C++ 6.0 and have no simple makefiles. The only formal notification of this dependency is found on page 225, in the Appendix "About the CD-ROM" where you are informed for the first time:
To use the contents of the CD, you must have a system capable of running Visual C++ 6.0. You should also have Visual C++ 6.0 installed on your machine. Of course, if all you want to do is look at the files, but not compile or run them, you can just use Notepad or any other text editor of your choice.
Such as vi on Solaris 2.6, for instance, which is not an architecture noted for running Visual C++ 6.0, nor Notepad, yet is perfectly adequate to view the sources. So even when the truth comes out, it's factually garbled due to insularity of outlook.
There's even a long Wintel disassembly dump shoveled into Technique 159 "Walking the Call Stack" with a commentary offhanded enough, although stretching into Technique 160, to suggest that the authors are not, on this particular topic, much further along in expertise than the reader.
Caveat: If authors start from the assumption that Visual C++ is the only significant compiler, they're going to startle you occasionally with items from the list of the other important things they don't know and don't know that they don't know.
To summarize, this is not a particularly bad book. It's just not a particularly good book. It's furthermore a book that seems to be trying to take unfair advantage of the reader.
Electronic Review of Computer Books