Overview

Terminology

Term Definition
IDE Integrated Development Environment
VS Microsoft Visual Studio
R# JetBrains ReSharper
AJAX Asynchronous JavaScript and XML
API Application Programming Interface
DRY Don’t Repeat Yourself
YAGNI You Ain’t Gonna Need It

History

This document started out as a Microsoft Word document and was originally published at CodePlex in 2008 by Encodo Systems AG. It has been updated a few times over the years, but not nearly often enough to keep pace with changes.

This most recent version reflects a conversion to Markdown format and storage in a Git repository to improve version-tracking, collaboration and updates.

It is also a complete overhaul in both content and structure to provide maximum benefit to various readers. It is also now maintained by Marco von Ballmoos (partner and senior developer at Encodo Systems AG) instead of by Encodo itself.

Versions

Version Date Author Comments
7.0.0 29.04.2017 MvB Converted the manual from Microsoft Word to Markdown format; rewrote most chapters; removed redundancy; upgraded all styles/patterns from C# 3.5 to C# 7; matched version number to language-version number
2.0.0 Unreleased MvB Updated text throughout the “1 − General” and “2 − Design Guide” sections; added “7.17 − Using System.Linq”, “7.29 − Refactoring Names and Signatures” and “7.30 − Loose vs. Tight Coupling” best practices;
1.5.3 Unreleased MvB Added reference and notes from “The Little Manual of API Design”; added section “7.15 – Using Partial Classes”.
1.5.2 19.10.2009 MvB Expanded “8.1 – Documentation” with examples; added more tips to the “2.3 – Interfaces vs. Abstract Classes” section; added “7.21 – Restricting Access with Interfaces”; added “5.3.7 – Extension Methods” and “7.18 – Using Extension Methods”.
1.5.1 24.10.2008 MvB Incorporated feedback from the forums at the MSDN Code Gallery.
1.5 20.05.2008 MvB Updated line-breaking section; added more tips for generic methods; added tips for naming delegates and delegate parameters; added rules for object and array initializers; added rules and best practices for return statements; added tips for formatting complex conditions; added section on formatting switch statements.
1.4 18.04.2008 MvB Updated formatting for code examples; added section on using the var keyword; improved section on choosing names; added naming conventions for lambda expressions; added examples for formatting methods; re-organized error handling/exceptions section; updated formatting.
1.3 31.03.2008 MvB Added more tips for documentation; added white-space rules for regions; expanded rules for line-breaking; updated event naming section.
1.2 07.03.2008 MvB Change to empty methods; added conditional compilation section; updated section on comments; made some examples customer-neutral; fixed some syntax-highlighting; reorganized language elements.
1.1 06.02.2008 MvB Updated sections on error handling and naming
1.0 28.01.2008 MvB First Draft
0.1 03.12.2007 MvB Document Created

Referenced Documents

The style and formatting guidelines draw mostly from in-house programming experience. Most of the following documents were more heavily used in prior versions. References have been included for completeness.

Date Title Authors Version
13.04.2017 Patterns and Practices in C# 7 Jonathan Allen
20.07.2015 Microsoft C# Coding Conventions Microsoft VS2015
01.07.2011 IDesign C# Coding Standards Juval Lowy 2.4
19.05.2011 Optional argument corner cases, part four Eric Lippert
01.11.2008 Microsoft Framework Design Guidelines.aspx) Krzysztof Cwalina and Brad Abrams 2.0
19.06.2008 The Little Manual of API Design (PDF) Jasmin Blanchette
19.05.2005 Coding Standard: C# (PDF) Philips Medical Systems 1.3
26.01.2005 Microsoft Internal Coding Guidelines Brad Abrams 2.0