More Of The Same?
If you have read any of Francesco Balena's previous excellent and widely praised books you will probably already have an idea in your mind of what to expect with this latest one. However this book isn't simply a revamp of the previous ones and for some people that discovery came as a bit of a shock.
It's very natural to assume that this book is going to be the updated version of the previous ones. However this isn't really the case. This time the author has purposely chosen to take a narrower focus of topics, but to deal with those topics - which he assesses to be the core areas required for mastery of the 2005 version - in particularly fine detail.
Some people were surprised about this change of approach and as a result some of the early reviews on Amazon and similar review sites were negative - an almost unheard of event when it comes to Balena books! In particular, the complaints centred on major topics that seemed to be missing; Some of the advertising that had been used - such as this being the "Definitive One-volume reference" were also questioned. So, it came to the point that the author felt that he needed to respond and clarify the situation. Here is what he said:
I am writing a "review" of my own book to ensure that potential buyers know exactly what the book contains, how it is structured, and why.
First and foremost, this book does **NOT** cover all the topics that its 2002 and 2003 editions do. Most notably, it doesn't cover Windows Forms, ADO.NET, ASP.NET, plus other advanced topics such as serviced components, and security.
The point is, there are so many new things in the .NET Framework 2.0 and a single book can't cover them with the necessary level of detail. If I had squeezed all these topics in a 1400-page book (which is the largest book my publisher would allow me to write), the result wouldn't be satisfactory anyway. If you are interested in these high-level topics, you should purchase a book with a narrower focus, for example the excellent "Programming ASP.NET" by Dino Esposito.
After a lot of hard thinking, I decided to focus solely on important topics that, in my opinion, very few books cover adequately, namely the Visual Basic 2005 language and the most important base classes in the .NET Framework 2.0: basic data types, arrays and collections, resources, files and streams, object serialization, threading, PInvoke and COM interop.
After I took the decision, I had to face the problem of choosing the best title for the new edition. Some portions of this book are taken from its previous editions, therefore the title should have been close enough to make the relation clear. At the same time, the title should have been different enough to emphasize that it isn't a new edition the **same** book. In the end, I opted for appending "The Language" to the original title, hoping that this difference was apparent enough as to have readers of previous edition look more closely at its Table of Contents and understand that some chapters were missing.
The new edition covers in all the new features of the language a very detailed manner, including generics, the My Namespace, unsigned integers, partial classes, operator overloading, and custom events.
But this book is more than just a reference book; rather, it is about **programming techniques** that you can implement with Visual Basic 2005 and base classes in the .NET Framework 2.0. For example, I devote an entire chapter to explain how reflection can be useful to solve recurring programming problems in a very elegant manner, whereas another chapter describes how you can custom attributes to implement plug-ins for Windows Forms application and n-tier, data-centric applications. The chapter on regular expressions shows how you can use this under-utilized .NET feature to parse html files, read comma-delimited and fixed-length data files, perform quite sophisticated input data validation, and more.
Finally, it makes little sense to focus on the language and know nothing about the IDE, and for this reason the book devotes over 110 pages to improving productivity by means of the old and new features of Visual Studio, such as macros, code snippets, tracepoints, unit testing, code coverage, code analysis, and more.
You can read more about this book, including the complete Table of Contents and a couple sample chapters, on my blog hosted by the dotnet2themax web site.
Given that clarification, potential buyers will now be in a much better position to decide if this book will be useful to them.
So, Who Should Read This Book?
In his book Introduction the author says that "The short answer is that this book is for all Visual Basic 2005 Developers". He then goes on to refine that answer by listing several classes of potential readers.
Having now worked through much of the book content myself now, I find it easy to agree with his first one line answer (all VB 2005 developers) but would add the rider: "as soon as you are ready for this level". In other words, this is not a book for beginners, even though the initial chapters do cover a wide range of core basic topics. However, it isn't just an Expert book either. Or an Intermediate one. It's a bit of all of them and in truth, it's even harder than usual to identify exactly the answer to the usual question of "Who should read this book?". If I was forced to come up with the definitive answer I would say "If you are going to continue using VB 2005 and want the means to improve your knowledge and skills as you reach higher and higher levels then you should read this book".
As a reference source for techniques it is superb. For clear explanations in detail on those areas selected for in-depth coverage, this is classic Balena. But if you want the more hand-holding introduction to a wider range of VB.NET subjects then you should probably check out his previous VB.NET book before moving on to this one.
I think you'll get the idea of who the publishers want to attract if you look at the back cover blurb. It says:
Discover how to:
• Compress files, manipulate ACLs, use semaphores, and exploit other new capabilities in the .NET Framework 2.0
• Implement generics to define a type-safe data structure
• Use inheritance, polymorphism, interfaces, delegates, and attributes to write flexible applications
• Use the My namespace to perform common tasks more easily
• Work with the new editing and debugging features of Microsoft Visual Studio 2005
• Master regular expressions and perform complex text searches and input validation
• Take advantage of streams, serialization, and threading techniques
• Implement advanced programming techniques based on custom attributes, reflection, and on-the-fly compilation
• Interact with legacy code by using PInvoke and COM Interop
• Understand key differences from Visual Basic 6.0
I don't think any .NET Newbie could complain that they were misled into thinking this is a beginners book after reading that.