As part of my promise (to myself) that I’d publish regular articles to my blog, I’ve decided to review any tech-related books that I happen to read. The first one, and the subject of this article is “Accelerated C# 2010” by Trey Nash (Apress, 2010).
I bought this book in Waterstones a couple of weeks ago shortly after C# 2010, also known as C# 4.0 was released by Microsoft. Over the last few weeks I’ve been reading it bit by bit as it’s a little heavy to take in without taking your time over it. Now before getting too far into this review, I just want to say that this is not a good book—in fact if I’d known better when I bought it, I’d have picked something else.
Why is it a bad book? Well, there are a number of reasons why I think this book is particularly poor. The first thing that struck me, when I started reading either the preface or introduction (I forget which), was the constant references to the “new features” introduced by C# 3.0—yes that’s right, 3.0—yet there wasn’t a single reference to C# 4.0, the very subject of the book. So it was clear right from the start that something wasn’t right, and the fact that the author didn’t appear to have updated the preface/introduction between editions didn’t exactly fill me with confidence.
The second reason, for me at least, was that the book just didn’t seem to be laid out very well. Now this isn’t really slur on the author, but more the publisher. It just didn’t seem to be very well typeset, and the distinction between sections of text with special meanings just wasn’t very clear. There was also no section at the start of the book explaining the type conventions used throughout the book—the program outputs for example were truly bizarre and didn’t appear to follow any particular type convention.
Thirdly, the author made the assumption that you’d either know C++ or care about it in some was or other. As far as I know, and I’ve only been writting C# for five years, there’s no requirement to know C++ first! Yet almost every section made references as to how something would be achieved in C++, or how C++ was similar/different. The author even went as far as providing some C++ code examples on at least one occasion, which I for one found particularly useless in a book about C#.
Now my biggest criticism of the book is that the title is incredibly misleading—there really was nothing “accelerated” about it. The author constantly describes, and gives code samples, for how to achieve tasks within older versions of C# (quite often C# 2.0) and then at the end of such a section says “C# 4.0 does this differently”! So why bother explaining how it used to be done?? In a book about C# 4.0 I couldn’t care less how to write something in an older version of the language, I want to know how to write it in C# 4.0 and not find that I’ve wasted time reading about a technique that is actually obsolete—especially when it was a tough concept and I made the effort to understand and learn it only to find that it’s actually useless.
On the plus side, the book is very comprehensive and contains many chapters about different aspects of C#, and it’s a fairly thick book so you get a fair chunk of dead tree for your money. I wouldn’t, however, buy this book again if I had the choice and I certainly wouldn’t recommend it.
Dylan’s rating: 4/10