Использование @keyword в C # - плохая идея? - PullRequest
3 голосов
/ 08 апреля 2010

В моем соглашении об именах я использую _name для закрытых переменных-членов. Я заметил, что если я автоматически сгенерирую конструктор с помощью ReSharper, если член является ключевым словом, он сгенерирует ключевое слово escape Например:

class IntrinsicFunctionCall
{
    private Parameter[] _params;
    public IntrinsicFunctionCall(Parameter[] @params)
    {
        _params = @params;
    }
}

Это вообще считается плохой практикой или это нормально? Это происходит довольно часто с @params и @ interface.

РЕДАКТИРОВАТЬ: Это на самом деле не добавляет префикс к имени переменной. Если получить доступ к этой переменной из другого языка .NET, то есть F #, это будет просто params. На самом деле, в C #, если вы напишите @x, это в точности эквивалентно x.

Ответы [ 3 ]

6 голосов
/ 08 апреля 2010

Использование ключевых слов языка в качестве идентификаторов влияет на читабельность.Конечно, правильный синтаксис High-Lightning немного помогает, но лучше не полагаться только на функции редактора.

Рассмотрим следующий (преувеличенно нечитаемый, очевидно :-)) код:

interface IInterfaceFactory<T>
{
   T CreateInstance(params object[] @params);
}

class SomeClass
{
    IMyOtherInterface _interface;

    public IMyOtherInterface Interface
    {
        get { return _interface; }
    }

    public SomeClass(params object[] @params)
    {
        SomeInterface<IMyOtherInterface> interfaceFactory = new SomeInterface<IMyOtherInterface>();
        IMyOtherInterface @interface = interfaceFactory.CreateInstance(@params);
        if (@interface->IsValid())
        {
            _interface = @interface;
        }
        else
        {
            _interface = interfaceFactory.CreateInstance();
        }
    }
}
0 голосов
/ 08 апреля 2010

Это зависит от вашего личного вкуса, однако вы должны поддерживать свой стиль в соответствии со всем кодом.

Это пример согласованности кода, используйте тот же стиль в процессе.

int @number;
string @name;

Это может показаться плохим кодом, используйте стиль смешивания.

int @number;
string _name;
0 голосов
/ 08 апреля 2010

Обычно не плохая практика. Если вы предпочитаете использовать префиксы для каких-то переменных, это нормально. Насколько я знаю, Microsoft рекомендует не использовать префиксы, кроме I в именах интерфейсов.

...