CA1500: Variablennamen sollten nicht mit Feldnamen übereinstimmen
TypeName |
VariableNamesShouldNotMatchFieldNames |
CheckId |
CA1500 |
Kategorie |
Microsoft.Maintainability |
Unterbrechende Änderung |
Wenn für einen Parameter ausgelöst, der über den gleichen Namen wie ein Feld verfügt:
Wenn für eine lokale Variable ausgelöst, die den gleichen Namen wie ein Feld hat:
|
Ursache
Mit einer Instanzenmethode wird ein Parameter oder eine lokale Variable deklariert, dessen bzw. deren Name mit dem Namen eines Instanzenfelds des deklarierenden Typs übereinstimmt. Um lokale Variablen, die gegen die Regel verstoßen, abzufangen, muss die getestete Assembly mit Debuginformationen erstellt werden, und die zugehörige Programmdatenbankdatei (PDB) muss verfügbar sein.
Regelbeschreibung
Wenn der Name eines Instanzenfelds mit dem Namen eines Parameters oder einer lokalen Variablen übereinstimmt, wird im Methodentext mit dem this-Schlüsselwort (Me in Visual Basic) auf das Instanzenfeld zugegriffen. Bei der Codeverwaltung gerät dieser Unterschied leicht in Vergessenheit, und dann wird häufig angenommen, dass sich der Parameter bzw. die lokale Variable auf das Instanzenfeld bezieht, wodurch Fehler entstehen. Dies gilt besonders für lange Methodentexte.
Behandeln von Verstößen
Um einen Verstoß gegen diese Regel zu beheben, benennen Sie entweder den Parameter/die Variable oder das Feld um.
Wann sollten Warnungen unterdrückt werden?
Unterdrücken Sie keine Warnung dieser Regel.
Beispiel
Im folgenden Beispiel werden zwei Verstöße gegen diese Regel veranschaulicht.
Imports System
Namespace MaintainabilityLibrary
Class MatchingNames
Dim someField As Integer
Sub SomeMethodOne(someField As Integer)
End Sub
Sub SomeMethodTwo()
Dim someField As Integer
End Sub
End Class
End Namespace
using System;
namespace MaintainabilityLibrary
{
class MatchingNames
{
int someField;
void SomeMethodOne(int someField) {}
void SomeMethodTwo()
{
int someField;
}
}
}