I was asked to order this book for the company I work for to see if we could improve the skills of our junior programmers.
After reading the first 6 chapters there was no way I would let our staff read this book. Why?
First it is full of incredibly bad programming practices. The author talks about code reuse, which is a concept I am all for. However he his definition of code reuse is to share a module (.BAS) between all your applications, which is a horribly bad thing to do. Code reuse should be 'black box', ie ActiveX dlls or controls.
Second point is the book talks about things which are simply not true in VB6. A good example is section 5.5, where he talks about how error handlers work. He talks about the scope of a ON ERROR command -- which he says is only in the current routine, and not any called by the it. This as all VB6 programmers knows is wrong. He also talks about the string parsers such as MID which fail if you ask for something outside the string length which is also not the case. It would seem this book has been written for VB4 as this was the case is VB5.
Third is the horrendous wrapping he performs. He actually wraps the MSGBOX function, to avoid a null being passed into the message. Come on! Any VB programmer knows this is a completely pointless exercise. (In fact the function he suggests does not allow you to pass other MSGBOX parameters)
Fourth is the very bad UI design. He suggests if a user doesn't enter a valid value you should not be able to move away from the textbox. (For example.) This is the worst thing you can do. SETFOCUS should only be used in the most exceptional circumstances. It could cause the machine to hang -- as two controls fight for focus, or at the very best frustrate the user. For example, if I would not be able to move away from the textbox to copy data to paste to it.
I can go on. He uses variants to much, he suggests always using named parameters. (How much extra time would that take, and for what? A function definition should be static.)
He does suggest some good points, like clearing pointers (setting objects to nothing) and sensible variable definition. But the bad completely out weights the good. Avoid. (And dont give it to young and impressionable programmers.)