Partager via


CA1500 : Les noms de variables ne doivent pas être identiques aux noms de champs

TypeName

VariableNamesShouldNotMatchFieldNames

CheckId

CA1500

Catégorie

Microsoft.Maintainability

Modification avec rupture

Lorsqu'elle est déclenchée sur un paramètre qui a le même nom qu'un champ :

  • Sans rupture - Si le champ et la méthode qui déclare le paramètre ne sont pas visibles à l'extérieur de l'assembly, quelle que soit la modification effectuée.

  • Avec rupture - Si vous modifiez le nom du champ et que celui-ci est visible à l'extérieur de l'assembly.

  • Avec rupture - Si vous modifiez le nom du paramètre et que la méthode qui le déclare est visible à l'extérieur de l'assembly.

Lorsqu'elle est déclenchée sur une variable locale qui a le même nom qu'un champ :

  • Sans rupture - Si le champ n'est pas visible à l'extérieur de l'assembly, quelle que soit la modification effectuée.

  • Sans rupture - Si vous modifiez le nom de la variable locale et que vous ne modifiez pas le nom du champ.

  • Avec rupture - Si vous modifiez le nom du champ et que celui-ci est visible à l'extérieur de l'assembly.

Cause

Une méthode d'instance déclare un paramètre ou une variable locale dont le nom correspond à un champ d'instance du type déclarant. Pour intercepter les variables locales qui enfreignent la règle, l'assembly testé doit être construit avec des informations de débogage et le fichier de base de données de programme (.pdb) associé doit être disponible.

Description de la règle

Lorsque le nom d'un champ d'instance correspond au nom d'un paramètre ou d'une variable locale, le champ d'instance est accédé à l'aide du mot clé this (Me en Visual Basic) lorsqu'il figure dans le corps de la méthode. Lorsque vous gérez le code, il est facile d'oublier cette différence et de supposer que le paramètre ou la variable locale fait référence au champ d'instance, ce qui crée des erreurs. C'est surtout vrai pour les corps de méthode longs.

Comment corriger les violations

Pour corriger une violation de cette règle, renommez le paramètre/variable ou le champ.

Quand supprimer les avertissements

Ne supprimez aucun avertissement de cette règle.

Exemple

L'exemple suivant présente deux violations de la règle.

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;
      }
   }
}