VC++, C#, VB.NET Coding Guideline of All-In-One Code Framework

The coding standards for native C++ and .NET (C# and VB.NET) programming used by the All-In-One Code Framework team is now available to everyone. The Microsoft All-In-One Code Framework project team writes code samples based on this guideline.

Download: https://1code.codeplex.com/releases

The coding standards are continuously evolving. If you discover a new best practice or a topic that is not covered, please bring that to the attention of the All-In-One Code Framework Project Group (onecode@microsoft.com). I look forward to appreciating your contributions.  :-)

codingstandards.png

Table of Contents

1      Overview.......................................................................................................................... 1

1.1      Principles & Themes................................................................................................. 1

1.2      Terminology................................................................................................................ 1

2      General Coding Standards........................................................................................ 3

2.1      Clarity and Consistency........................................................................................... 3

2.2      Formatting and Style................................................................................................ 3

2.3      Using Libraries........................................................................................................... 5

2.4      Global Variables........................................................................................................ 5

2.5      Variable Declarations and Initalizations............................................................. 5

2.6      Function Declarations and Calls............................................................................ 6

2.7      Statements................................................................................................................... 8

2.8      Enums............................................................................................................................ 8

2.9      Whitespace................................................................................................................ 13

2.10   Braces........................................................................................................................... 14

2.11   Comments................................................................................................................... 15

2.12   Regions........................................................................................................................ 23

3      C++ Coding Standards............................................................................................ 25

3.1      Compiler Options................................................................................................... 25

3.2      Files and Structure.................................................................................................. 26

3.3      Naming Conventions............................................................................................. 27

3.4      Pointers...................................................................................................................... 30

3.5      Constants................................................................................................................... 31

3.6      Casting....................................................................................................................... 32

3.7      Sizeof.......................................................................................................................... 32

3.8      Strings........................................................................................................................ 33

3.9      Arrays......................................................................................................................... 34

3.10   Macros........................................................................................................................ 35

3.11   Functions..................................................................................................................... 35

3.12   Structures................................................................................................................... 38

3.13   Classes........................................................................................................................ 38

3.14   COM............................................................................................................................ 44

3.15   Allocations.................................................................................................................. 45

3.16   Errors and Exceptions............................................................................................. 46

3.17   Resource Cleanup..................................................................................................... 48

3.18   Control Flow................................................................................................................ 50

4      .NET Coding Standards............................................................................................. 54

4.1      Design Guidelines for Developing Class Libraries........................................ 54

4.2      Files and Structure................................................................................................... 54

4.3      Assembly Properties............................................................................................... 54

4.4      Naming Convensions............................................................................................. 54

4.5      Constants................................................................................................................... 57

4.6      Strings......................................................................................................................... 58

4.7      Arrays and Collections........................................................................................... 59

4.8      Structures.................................................................................................................... 61

4.9      Classes......................................................................................................................... 62

4.10   Namespaces................................................................................................................ 65

4.11   Errors and Exceptions.............................................................................................. 65

4.12   Resource Cleanup...................................................................................................... 68

4.13   Interop........................................................................................................................... 80