The earlier version of this book - "Mastering Visual Basic.NET" by Evangelos Petroutsos - was the very first VB.NET book I owned and currently sits in pole position in my (now much larger) .NET library. It's a book I've reached for countless times over the past couple of years and so I was intrigued to know how this VB2005 version would compare to the original.
As I dug into the book it soon became clear that this is very much an update of the original and not a "totally rewritten from the ground up" type of approach. I have no problem with that; as I say I've found the original very useful many times. If it ain't broke, don't fix it I mention it only in passing for the benefit of those who do have the original book and who are maybe wondering if they should invest in the latest version. There are of course new VB2005 related sections, but much of the rest will be familiar to them.
I have always liked the way the book just jumps straight in and has you creating mini applications right from the start. It's not everyone's ideal approach, but it works for me. I find that it's one of those books I feel I can pick up when things are quiet and read through a section at random, often finding a useful little nugget of code to try out or a technique to store away in the mind for later use. (Or, to be realistic, to store away only to have one of those "Oh, heck, now where was it that I read the answer to this problem....? " moments somewhere down the line).
I don't want to give the impression that the book is haphazard, because it isn't. It's just that the author doesn't shrink from using intermediate level techniques where they make for a more interesting example. It is clearly structured and follows a logical order. (I have often thought that it must be mind-blowingly daunting to sit down to try to map out a structure for a book that aims to cover a topic as massive as this !)
The publishers have classified the book with a User Level of "All Levels". I think that it's much better suited to readers who have previous experience of either Classic VB or another language. That's not to say that you can't go from zero to hero with this book if you have the aptitude; it's just that there's an underlying assumption that you'll grasp quite a lot of sometimes intermediate level topic fairly early on. So if you like to be led gently by the hand in small steps then this might not be your best bet, but if you're prepared to strip off and jump straight into the deep end then I think you'll enjoy it and get value from it.
The book is over 1400 pages long, the print font isn't large and the use of screenshots has been kept relatively low. As a result, there is a lot of material in this book. I'll list the major parts of the book, so you can see the flow of it:
Part 1: GUI Design and Event Driven Programming
Part 2: Building Rich Client Applications
Part 3: Programming with Objects
Part 4: Working with the .NET Framework
Part 5: Drawing and Printing
Part 6: Database Programming
Part 7: Programming for the Web
Part 8: Polishing Your Applications
If you want to see the complete list of contents, this link will take you to this page on the Wiley site where you can see the full monty.
When you get to a book of these proportions, I always think that the quality of the Index is as important as the quality of the content. Although I've never yet found an Index to compare to the totally comprehensive one in Deitel and Deitel's VB6: How To Program book, this one is fine. It's comprehensive and logical .
You can see for yourself here.
I usually spot-check the Index when I take my first look at a new book (back to that "Now where did I read that fix?" situation). So I thought that the Indexer had missed a couple of key areas when I looked for "Imports" and "Namespace". However, going through the book with a medium size toothcomb I couldn't actually find a place where these are introduced and explained. They're certainly used in the samples in the book and Imports statements are included throughout the downloadable samples. Of course in a 1400 page book maybe they are tucked away in there somewhere and both the Indexer and I overlooked them. If they have been left out of the content then, especially as both of them are new concepts for VB Classic Upgraders, I think I'd recommend that they are included in the next edition.
Downloadable samples got a mention a moment ago. There are plenty of these to choose from. Many of those that I tried out worked well and many include a reasonable amount of commenting to complement the explanations in the book itself. The author always tries to create interesting, often non-trivial examples that be used to learn with and then reused in real world situations later.
I did have problems with some of the downloaded samples, however. When I tried to run them I received an error message as shown:
It may of course just be something to do with a setting on my personal system. In any event, in those samples where the problem occurred it was quickly fixed by adding a Reference to the Microsoft.VisualBasic.Compatibility namespace into the project and rebuilding it.
It's a small point, but I'll mention it anyway. Congratulations to the publishers for finally coming up with a way of creating a book of this size that really does lay flat when it is opened on the desk. Better yet, one that stays flat without you having to jam your elbow into the gap between the pages - trying to type code with your arm twisted round like an amateur contortionist !
So, in summary, this is an interesting and well written book which will be useful to Classic VB upgraders and to VB.NET developers who don't have the earlier edition of the book. If you want to view the authoring style, the whole of Chapter 1 is viewable here.
In his Introduction the author says:
"This book isn't about the hottest features of the language; it's about solid programming techniques and practical examples. Once you master the basics of programming Windows applications with Visual Basic 2005 and you feel comfortable with the more advanced examples of the book, you will find it easy to catch up with the topics* not discussed in this book."
"One of my goals in writing this book was to exhaust the topics I've chosen to discuss and present all the information you need to do something practical."
There's no doubt in my mind that he has succeeded in doing that.
* which might have a bearing on my comments about the Imports statement and namespaces not being described, of course.