IntelliTect / IntelliTect/CodingGuidelines

Flag optional arguments on methods that differ from their interface declarations

Offen
#102 5 Kommentare 0 Reaktionen 4 zugewiesene Personen Beansprucht von @GrantErickson Auf GitHub ansehen
documentation
Vorherrschende Sprache
C#
Sterne
12
Forks
16
Ø Merge
2 Min.
Gemergte PRs (30 T.)
7

Beschreibung

Consider the following case:
```C#
public class Foo : IFoo
{
public void Bar(int value = 2) => Console.WriteLine(value);
}
public interface IFoo
{
public void Bar(int value = 1);
}

public static void Main(string[] args)
{
IFoo foo1 = new Foo();
foo1.Bar();
var foo2 = new Foo();
foo2.Bar();
}
```
Output:
```
2
1
```

I would propose that the coding standard be
```
DO NOT: declare optional arguments on class methods that are implementing an interface.
```
Rational:
- If these value are not in sync it will cause behavior as shown above.
- It is possible to declare a constant and share it in both places. However, if you have an interface for accessing the class, why is there code bypassing it? If you want to invoke the method using the default value, simply go through the interface.

Beitragsleitfaden

Beitragsleitfaden öffnen

Bewertung

Dieses Issue wurde noch nicht bewertet.

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.