Static fields naming convention

Rule ND2001 Naming Conventions

Supports the 3 most used static field naming conventions (adaptable to your own):

- name starting with an upper-case letter

- name starting with "_" followed by an upper-case letter

- name starting with "s_" followed by an upper-case letter

A static field behaves completely differently from an instance field, so differentiating them at a glance (e.g. s_ prefix) is valuable. Related discussion: https://blog.ndepend.com/on-hungarian-notation-for-fields-in-csharp/

How to fix

After adapting the rule to your naming convention, name all matched static fields adequately.

CQLinq source

This rule is written in CQLinq, C# LINQ over the NDepend code model. It ships with every new NDepend project: you can read it, adapt it, or use it as a starting point for your own custom rules.

// <Name>Static fields naming convention</Name>
// <Id>ND2001:StaticFieldsNamingConvention</Id>

warnif count > 0 
from f in JustMyCode.Fields where 
   f.IsStatic && 
  !f.IsLiteral && 
  !f.IsGeneratedByCompiler && 
  !f.IsSpecialName && 
  !f.IsEventDelegateObject &&
  !( 
    // Static field name starting with an upper-case letter
    (f.Name.Length >= 1 && char.IsLetter(f.Name[0]) && char.IsUpper(f.Name[0])) ||

    // Static field name starting with "_" followed with an upper-case letter
    (f.Name.Length >= 2 && f.Name.StartsWith("_") && char.IsLetter(f.Name[1]) && char.IsUpper(f.Name[1])) ||

    // Static field name starting with "s_" followed with an upper-case letter
    (f.Name.Length >= 3 && f.Name.StartsWith("s_") && char.IsLetter(f.Name[2]) && char.IsUpper(f.Name[2])) 
  )
select new {
   f,
   f.SizeOfInst,
   Debt = 3.ToMinutes().ToDebt(),
   Severity = Severity.Medium
}  

//<Expl>
// The *static {0}* name does not adhere to usual .NET field naming conventions.
// It does not start with an uppercase letter, 
// an underscore followed by an uppercase letter
// or a *s_* expression followed by an uppercase letter.
//</Expl>

//<Desc>
// Supports the 3 most used static field naming conventions (adaptable to
// your own):
//
// - name starting with an upper-case letter
//
// - name starting with "_" followed by an upper-case letter
//
// - name starting with "s_" followed by an upper-case letter
//
// A *static field* behaves completely differently from an *instance field*,
// so differentiating them at a glance (e.g. **s_** prefix) is valuable.
// Related discussion:
// https://blog.ndepend.com/on-hungarian-notation-for-fields-in-csharp/
//</Desc>

//<HowToFix>
// After adapting the rule to your naming convention, name all matched
// static fields adequately.
//</HowToFix>

Naming Conventions: all 23 items