CA1500: Nomes de variáveis não devem corresponder a nomes de campo
TypeName |
VariableNamesShouldNotMatchFieldNames |
CheckId |
CA1500 |
<strong>Categoria</strong> |
Microsoft.Maintainability |
Alteração significativa |
Quando acionado em um parâmetro que tem o mesmo nome de um campo:
Quando disparado em uma variável local que tem o mesmo nome de um campo:
|
Causa
Um método de instância declara um parâmetro ou uma variável local cujo nome corresponde a um campo de instância do tipo declarativo. Para capturar as variáveis locais que violam a regra, o assembly testado deve ser construído usando as informações de depuração e o arquivo de banco de dados (. PDB) do programa associado deve estar disponível.
Descrição da regra
Quando o nome de um campo de instância corresponde a um parâmetro ou um nome de variável local, o campo de instância é acessado usando o this (Me na Visual Basic) palavra-chave quando dentro do corpo do método. Quando a manutenção do código, é fácil esquecer essa diferença e assumir que a variável de parâmetro/local se refere ao campo de instância, o que leva a erros. Isso vale especialmente para os corpos de método demorado.
Como corrigir violações
Para corrigir uma violação desta regra, renomear a variável de parâmetro/ou em campo.
Quando suprimir avisos
Não suprimir um aviso da regra.
Exemplo
O exemplo a seguir mostra duas violações da regra.
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;
}
}
}