rspec/rules/S1117/csharp/rule.adoc

42 lines
1.2 KiB
Plaintext
Raw Normal View History

== Why is this an issue?
2020-06-30 12:47:33 +02:00
Shadowing occurs when a local variable has the same name as a variable, field, or property in an outer scope.
include::../problems.adoc[]
To avoid these problems, rename the shadowing, shadowed, or both variables/fields/properties to accurately represent their purpose with unique and meaningful names.
It improves clarity and allows reasoning locally about the code without considering other software parts.
This rule focuses on variables shadowing fields or properties.
=== Noncompliant code example
2020-06-30 12:47:33 +02:00
2022-02-04 17:28:24 +01:00
[source,csharp]
2020-06-30 12:47:33 +02:00
----
class Foo
2020-06-30 12:47:33 +02:00
{
public int myField;
public int MyProperty { get; set; }
2020-06-30 12:47:33 +02:00
public void DoSomething()
2020-06-30 12:47:33 +02:00
{
int myField = 0; // Noncompliant
int MyProperty = 0; // Noncompliant
2020-06-30 12:47:33 +02:00
}
}
----
== Resources
=== Documentation
* Microsoft Learn - https://learn.microsoft.com/en-us/dotnet/csharp/programming-guide/classes-and-structs/fields[Fields]
* Microsoft Learn - https://learn.microsoft.com/en-us/dotnet/csharp/programming-guide/classes-and-structs/properties[Properties]
=== Related rules
* S2387 - Child class fields should not shadow parent class fields
* S3218 - Inner class members should not shadow outer class "static" or type members
include::../rspecator.adoc[]