Использование свойств выражения в выражениях для констант - это анти-паттерн? - PullRequest
1 голос
/ 20 мая 2019

В моей базе кода есть несколько случаев, когда у нас есть класс с членом, который всегда возвращает константу.Например, что-то вроде этого:

public interface MyInterface
{
    string SomeString { get; }
}

public class MyClass : MyInterface
{
    public string SomeString => "Hello World!";
}

Все они имеют свои различные варианты использования.

Теперь я добавил анализатор кода в свой проект (Microsoft.CodeQuality.Analyzers) и для каждогоиз этих членов это помечено предупреждением: warning CA1822: Member SomeString does not access instance data and can be marked as static (Shared in VisualBasic)

Теперь, очевидно, я не могу пойти и пометить их как статические (так как они требуются в контракте интерфейса), так что я только что былподавляя их:

public class MyClass : MyInterface
{
#pragma warning disable CA1822 // Mark members as static
    public string SomeString => "Hello World!";
#pragma warning restore CA1822 // Mark members as static
}

Есть также некоторые классы, которые не реализуют интерфейс, кажется, это немного зарождается в моей кодовой базе.

Но теперь мне интереснодействительно ли это использование свойств выражения тела что-то для нас делает?Я имею в виду, что анализатор не ошибается, это член, который не имеет доступа ни к какому экземпляру.

...