Resharper StyleCop SA1306 и корпус делегатов Func ‹T›

public class MyClass
{
    private Func<string, string> KeyTransformer;

    public MyClass(Func<string, string> keyTransformer)
    {
        KeyTransformer = keyTransformer;
    }

    public string DoSomething(string input)
    {
        return KeyTransformer(input);
    }
}

Очевидно Resharper предлагает мне переименовать «поле» в _keyTransformer.

Но кажется неправильным писать что-то вроде этого:

string newKey = _keyTransformer("input");

Итак, вопрос №1: Оболочка Паскаля или оболочка верблюда?

И вопрос №2 (если это паскаль): Как мне сказать Resharper, что можно использовать паскаль-оболочку для Func?


person lapsus    schedule 13.11.2013    source источник
comment
Есть ли конкретная причина, по которой у вас есть поле, а не собственное имущество?   -  person AakashM    schedule 19.11.2013
comment
Если он не хочет раскрывать KeyTransformer за пределами MyClass, почему он должен использовать автосвойство? Только не говорите "частная собственность": P   -  person Carnifex    schedule 07.12.2013


Ответы (2)


Какой стиль будет понятнее для следующего человека, который прочитает код?

В этом случае вы делаете что-то немного необычное (вызываете метод, хранящийся в поле), поэтому тот факт, что синтаксис выделяет его, неплохо.

person Matthew Strawbridge    schedule 14.11.2013

Это частное поле, верблюжье дело.

Правило SA1306: имена переменных и частных полей должны начинаться с строчной буквы: {0}.

Не очевидно (в случае R #) предлагать подчеркивание.

Правило SA1309: Имена полей не должны начинаться с подчеркивания.

Итак, вам нужно изменить поведение вашего R # :) В моем случае после установки StyleCop (4.7.47) и открытия проекта в VS, R # уведомляет меня о том, что некоторые правила не соответствуют StyleCop, и спрашивает меня, хочу ли я его изменить . Итак, у меня те же правила в R # и StyleCop (например, соглашение об именах для частных полей)

public class MyClass
{
    private Func<string, string> keyTransformer;

    public MyClass(Func<string, string> keyTransformer)
    {
        this.keyTransformer = keyTransformer;
    }

    public string DoSomething(string input)
    {
        return keyTransformer(input);
    }
}
person Carnifex    schedule 07.12.2013