Customer Rating:      Summary: Mediocre for advanced C# devs, good for intermediate Comment: After reading the reviews praising this book, I had high expectations. While the author's prose is clearer than most, it suffers from the usual technical-author-verbosity. I found the overall content of the book lacking, while several sections were very well presented.
The author switches between beginning and intermediate C# topics throughout the text, which can be a bit jarring. For example, he spends about 3 pages introducing delegates before getting into meatier issues. I would have loved a book 1/3rd of this length that skipped intro to intermediate topics.
The author provides constant comparisons and references to how things are done in C++. However, the usefulness of each section rarely exceeds what you can find in MSDN or Effective C#: 50 Specific Ways to Improve Your C# (Effective Software Development Series).
There are moments where the author delves into less frequently used features or advanced topics, such as using yield, SafeHandles, or exception neutrality. These are usually presented in an overly complex manner that left me re-reading MSDN or the C# Language Reference more often than not.
There is excellent use of IL to illustrate what's going on behind various language constructs. The chapter on threading is well presented and worth a read.
The best practices embedded in the "Note" subsections can be useful but, again, these ideas are better presented in Effective C# or the various "patterns" pages on MSDN.
Beginners should avoid this book -- this is not an intro text. Intermediate C# developers may want to skim it to ensure they're aware of the latest language features and catch any tips they may not be aware of. Advanced C# developers can probably pass on this book -- you'll likely know all of the content already and the ideas are presented more thoroughly elsewhere.
Customer Rating:      Summary: Step Up Your Skill A Notch With Accelerated C# 2008 Comment: This book briefly covers the basics and then shows more advanced ways of applying the basics to the problem at hand. I felt like reading this book was worth my time as I began to understand how a seasoned C# programmer thinks when solving a problem. Trey Nash is trying to impart tidbits of experience he has gained in the trenches of writing complex multi-threaded apps. He brings in a lot of object and pattern theory by showing both the "wrong" and "right" way to do something. This clearly shows the benefits of using patterns and good object theory when constructing applications.
Customer Rating:      Summary: Decent Book, But the Audience is Wrong Comment: Overall, this is a decent book. But, simply because the author didn't properly define his audience, I have to mark it down a notch. From the 1st sentence of the "About This Book" section in the Introduction (on page xxvi), the author states:
"I assume that you already have a working knowledge of some object-oriented programming language, such as C++, Java, or Visual Basic .NET."
So, I assumed that since I'd already learned C, C++, and Java, but just dabble in programming, I could use this book instead of plowing through another 1200 page book that starts out with a chapter on sequential statements, a chapter on conditional statements, a chapter on iterative statements, etc.. But, that was a faulty assumption. Instead, this book is REALLY designed for programmers who've done some fairly advanced work in other object-oriented languages UNDER THE WINDOWS .NET FRAMEWORK. For instance, at the start of Chapter 1 (page 1, paragraph 1, line 1), it says:
"Since this is a book for experienced object-oriented developers, I assume that you already have some familiarity with the .NET runtime."
And, on page 231:
"I'm assuming that you're already familiar with the nongeneric collection types and collection interfaces available in .NET 1.1--specifically, those defined in the System.Collections and System.Collections.Specialized namespaces."
So, if you're not very familiar with .NET, you'll have problems with the book. Also, the author tends to slip out of even that "advanced .NET programmer" audience in another way: he sometimes writes to programmers who've used previous versions of C#. For instance, when he introduces Delegates in chapter 10, he never really ties them to the C/C++ model of function pointers or Java's inner classes. The closest he comes is saying they implement a callback function.
The author also assumes knowledge of various design patterns from the "Gang of Four's" Design Patterns: Elements of Reusable Object-Oriented Software (Addison-Wesley Professional Computing Series) book (and a few other sources, too). Here are the patterns he references and the pages where he makes those references:
- Abstract Factory: p 451
- Bridge: p 262
- Collection: p 36
- Disposable: pp 3, 19, 106, 187, 189, 374, 376, 377
- Expert: pp 172, 193
- IOU: pp 320, 354, 355, 362
- Monitor: p 337
- Non-Virtual interface (NVI): pp 117, 143, 144, 236, 238, 365, 366
- Observer: p 265
- Singleton: pp 74, 143 285, 377, 381
- Strategy: pp 122, 266, 276, 291
- Template Method: p 366
- Visitor: pp 424, 437
There are also some smaller things that are a bit irritating. First of all, his code formatting is inconsistent. His use of braces ({}) changes constantly. Sometimes he'll start a block with the first "{" immediately following a keyword on the same line. At other times, he'll put it at the start of the next line. Sometimes, he uses both in the same hunk of code. Ditto for his positioning of instance variables (fields in C# terminology). Sometimes he'll have them at the top of the class. Other times, he'll have them at the bottom. Sometimes, both. And, least importantly, he uses too many forward references (especially referring to Chapter 13).
Overall, if you happen to be an advanced programmer who programs in an object-oriented .NET environment for a living and you want to pick up the latest version of C#, this is a very good book. It certainly won't bore you with trivial stuff, and the way the author presents things will be very helpful. But, if you're just a dabbler with limited experience, the book will probably be confusing. As such, I can only rate it an OK 3 stars out of 5. In future printings, if the author merely revises the stated audience to reflect the actuality, and standardizes the formatting of the code, this book would easily be a 4 star book.
Customer Rating:      Summary: Pretty Good Comment: This is a pretty good book. This author is obviously a strong C++ programmer or was for many years, so his approach to the writing about
C# is very C++ bias which I think is very refreshing and pretty neat, to compare the OLD way and the NEW way. Dont get me wrong I am not implying
C++ is dead, I think is still by far the strongest most powerfull language ever, i am just saying C# is more practical, more FOR NOW, for the 21th Century..............
I like many 1990s programmers started in C, C++ so C# is like back to the good old days. C was one of my favorite language for many years..I did some java but I feel C# has gone beyond it by far.
Customer Rating:      Summary: C# for Real Developers Comment: I bought this book last Wednesday and figured it would be a decent enough overview of the new language features. I don't want to downplay the job he does covering new langauge features becuase that coverage is superb, but the job he does covering C# fundamentals is so well done that it eclipses everything else.
So it's a great book for beginners? Well, probably not. I think beginners would benefit by it but it's not a beginners book by any mean. What I do mean is that he does a really in depth job of covering just about every aspect of C# so that he can show the benefits of the new features as well. I've read over 100 books on .NET in the 7 years I've been working with it and frequently the Go to guy when it comes to exception handling for instance. So I really wasn't expecting to learn anything new here. But stylistically, the points he raises in showing how one could elegantly handle a Transaction rollback scenario is just really brilliant. And that same brilliance is exemplified throughout the book.
To that end, the examples in this book are it's real strength. As someone who's written a few books myself, I know how tempting it can be to come up with really simple and overused examples b/c basics aren't much fun to write about. Trey however totally resisted that temptation and I for the life of me can't see a single area that looks like he just 'wanted to get it done'. Everything is seemingly well thought out and written in a way that can clearly make his point clear. He also harkens back to C++ and the fact he has a ton of C++ experience shows through everywhere. It has a feel to it reminiscent of my senior computer science textbooks but without the stuffiness and without coming off as academic. On the contrary, it's the whole aire of advance business scenarios that makes it so cool
Now on to the new language features. I've read several books on LINQ and Lambda expressions. And while they are all great, his explanation of Lambda exprssions and the walk down Functional Programming memory lane is priceless. Had I read this book early on, the nuances of Lambda expressions would have been a lot easier to understand. His coverage of LINQ is in depth as well but he manages to really keep on track and show the business aspects of LINQ without every going down the path of sounding like a 'cool new feature cheerleader'.
I'll admit I have a pretty strong like of Apress books and have a pretty high expectation with their stuff. When I read Faison's Event-Based Programming : Taking Events to the Limit - I found it to be one of the most compelling and well done books I had read in ages. Internally, I thought it would be a longgg time before I came across a book anywhere near that good. Well, all I can really say is that Trey Nash proved me quite wrong. He exceeded any expectation I had by tenfold and got a lot out of this book - not just in C# terms but across the board.
|
|