Identifiers should not contain type names

TypeName

IdentifiersShouldNotContainTypeNames

CheckId

CA1720

Category

Microsoft.Naming

Breaking Change

Breaking

Cause

The name of a parameter in an externally visible member contains a type name.

Rule Description

Each concatenated word in the parameter name is checked against the following type names, in a case-insensitive manner:

  • bool

  • boolean

  • byte

  • char

  • double

  • float

  • float32

  • float64

  • int

  • int8

  • int16

  • int32

  • int64

  • integer

  • long

  • object

  • sbyte

  • short

  • single

  • string

  • uint

  • uint16

  • uint32

  • uint64

  • ulong

  • unsigned

  • ushort

  • wchar

Parameter names are better used to convey a parameter's meaning than to describe a parameter's type, which is expected to be provided by development tools. If a type name must be used, use a universal type name instead of a language-specific type name. For example, instead of the C# type name 'ushort', use the universal type name, UInt16.

How to Fix Violations

Select a parameter name that does not contain one of the previously listed type names.

When to Suppress Warnings

Occasional use of type-based parameter names might be appropriate. However, for new development, there are no known scenarios where it is necessary to suppress a warning from this rule. For shipping libraries, you might have to suppress a warning from this rule.

Identifiers should be cased correctly

Identifiers should differ by more than case

Identifiers should not contain underscores

Parameter names should not match member names