Udostępnij za pośrednictwem


CA1500: Nazwy zmiennych nie powinny odpowiadać nazwom pól

TypeName

VariableNamesShouldNotMatchFieldNames

CheckId

CA1500

Kategoria

Microsoft.Maintainability

Złamanie zmiany

Gdy wywoływane na parametr, który ma taką samą nazwę jak pole:

  • Niełamliwa - Jeśli pola i metody, która deklaruje parametr niewidoczni spoza zestawu, niezależnie od zmiany wprowadzone.

  • Przerywanie - Jeśli zmiana nazwy pola i są widoczne spoza zestawu.

  • Przerywanie - Jeśli zmienisz nazwę parametru i metodę, która jest ona deklarowana można postrzegać znajdującego się poza zestawem.

Gdy wywoływane w zmiennej lokalnej, która ma taką samą nazwę jak pole:

  • Bez podziału - Jeśli pole nie jest widoczny spoza zestawu, niezależnie od wprowadzone zmiany.

  • Bez podziału - Jeśli Zmień nazwę zmiennej lokalnej i nie zmienić nazwę pola.

  • Przerywanie - Jeśli zmienisz nazwę pola i są widoczne spoza zestawu.

Przyczyna

Metody instancji deklaruje parametr lub zmienna lokalna, których nazwa pasuje do pola typ deklarujący wystąpienia.Do połowu zmiennych lokalnych, które naruszają reguły, zestawu badane musi być budowany za pomocą informacji o debugowaniu i pliku bazy danych (.pdb) skojarzony z nim program musi być dostępny.

Opis reguły

Gdy nazwa pola wystąpienia pasuje do parametru lub nazwę zmiennej lokalnej, pole wystąpienia jest dostępny za pomocą this (Me w Visual Basic) słowo kluczowe, gdy wewnątrz treści metody.Utrzymywanie kodu, jest łatwo zapomnieć tę różnicę i zakładać, że zmienna lokalne parametr odwołuje się do pola wystąpienia, które prowadzi do błędów.Dotyczy to szczególnie dla organów długich metody.

Jak naprawić naruszenia

Aby naprawić naruszenie tej zasady, Zmień nazwę parametru/zmienna lub z pola.

Kiedy do pomijania ostrzeżenia

Nie pomijaj ostrzeżenie od tej reguły.

Przykład

W poniższym przykładzie przedstawiono dwa naruszenia reguły.

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