A1. Important Resources
The companion website
This document is part of an effort to increase the consciousness with which C# developers do their daily job on a professional level. Therefore I’ve started a dedicated CodePlex site that can be found at www.csharpcodingguidelines.com.
In addition to the most up to date version of this document, you’ll find:
- A companion quick-reference sheet
- Visual Studio 2010/2012 Rule Sets for different types of systems.
- ReSharper layout configurations matching the rules in chapter 10.
- A place to discuss C# coding quality.
In addition to the many links provided throughout this document, I’d like to recommend the following books, articles and sites for everyone interested in software quality:
Code Complete: A Practical Handbook of Software Construction (Steve McConnel)
One of the best books I’ve ever read. It deals with all aspects of software development, and even though the book was originally written in 2004 you’ll be surprised when you see how accurate it still is. I wrote a review in 2009 if you want to get a sense of its contents.
The Art of Agile Development (James Shore)
Another great all-encompassing trip through the many practices preached by processes like Scrum and Extreme Programming. If you’re looking for a quick introduction with a pragmatic touch, make sure you read James’s book.
Applying Domain-Driven Design and Patterns: With Examples in C# and .NET (Jimmy Nilsson)
The book that started my interest for both Domain-Driven Design and Test-Driven Development. It’s one of those books that I wished I had read a few years earlier. It would have spared me from many mistakes.
Jeremy D. Miller’s Blog
Although he is not that active anymore, in the last couple of years he has written some excellent blog posts on Test-Driven Development, Design Patterns and design principles. I’ve learned a lot from his real-life and practical insights.
LINQ Framework Design Guidelines
A set of rules and recommendations that you should adhere to when creating your own implementations of IQueryable.