All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.sonar.plugins.csharp.S2387.html Maven / Gradle / Ivy

There is a newer version: 10.2.0.105762
Show newest version

This rule is deprecated, and will eventually be removed.

Why is this an issue?

Having a variable with the same name in two unrelated classes is fine, but do the same thing within a class hierarchy and you’ll get confusion at best, chaos at worst.

Noncompliant code example

public class Fruit
{
  protected Season ripe;
  protected Color flesh;

  // ...
}

public class Raspberry : Fruit
{
  private bool ripe; // Noncompliant
  private static Color FLESH; // Noncompliant
}

Compliant solution

public class Fruit
{
  protected Season ripe;
  protected Color flesh;

  // ...
}

public class Raspberry : Fruit
{
  private bool ripened;
  private static Color FLESH_COLOR;
}

Exceptions

This rule ignores same-name fields that are static in both the parent and child classes. It also ignores private parent class fields, but in all other such cases, the child class field should be renamed.

public class Fruit
{
  private Season ripe;
  // ...
}

public class Raspberry : Fruit
{
  private Season ripe;  // Compliant as parent field 'ripe' is anyway not visible from Raspberry
  // ...
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy