代码之家  ›  专栏  ›  技术社区  ›  Robert Fraser

在C#中使用@keyword-坏主意?

  •  3
  • Robert Fraser  · 技术社区  · 14 年前

    在命名约定中,我对私有成员变量使用\u名称。我注意到,如果我用ReSharper自动生成一个构造函数,如果成员是关键字,它将生成一个转义关键字。例如:

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

    这通常被认为是不好的做法还是可以的?在@params和@interface中经常发生这种情况。

    编辑:这实际上并没有给变量名添加前缀。如果从另一种.NET语言(如F#)访问该变量,则 params . 事实上,在C#,如果你写 @x 完全等同于 x .

    3 回复  |  直到 14 年前
        1
  •  6
  •   Franci Penov    14 年前

    使用语言关键字作为标识符会影响可读性。诚然,正确的语法highlightning会有所帮助,但最好不要只依赖编辑器特性。

    考虑下面的(夸张的不可读,显然:-)代码:

    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();
            }
        }
    }
    
        2
  •  0
  •   David    14 年前

    这取决于你的个人品味,但你需要保持你的风格一致的所有代码。

    这是代码一致性的示例,使用相同的样式。

    int @number;
    string @name;
    

    这可能会考虑一个坏代码,使用混合样式。

    int @number;
    string _name;
    
        3
  •  0
  •   gdoron    13 年前

    不是一般的坏习惯。如果你喜欢为某些变量使用前缀,那没关系。据我所知,除了接口名上的I之外,微软建议不要使用前缀。