代码之家  ›  专栏  ›  技术社区  ›  Jan

C中私有方法的代码样式#

  •  31
  • Jan  · 技术社区  · 16 年前

    我刚发现,这似乎是一个常用的模式 UpperFirstLetterPascalCase() 对于私有方法。我自己发现,这与私有实例字段和变量的命名规则完全不一致,而且我发现读取/调试也很困难。

    我想问一下,为什么使用第一个大写字母作为方法比使用第一个小写字母更好 doThis() ?只是出于好奇…

    8 回复  |  直到 15 年前
        1
  •  22
  •   ChaosPandion    16 年前

    它不是真的好是坏。这只是惯例。

        2
  •  65
  •   Joey Gumbo    16 年前

    c中的所有方法名称都以大写字母开头(按约定)。所有属性名也会这样做。只有私有字段、局部变量和方法参数以小写字母(afair)开头。

    这是一个惯例,所以要求一个“为什么”是有点错位。这可能类似于问为什么,Java代码约定除了类之外,更喜欢小写字母?_对此类问题的回答通常是_因为某个人在某个地方曾经认为这样做是个好主意。剩下的只是历史或惯例,你要么遵守,要么不遵守(在这种情况下,你会使人们阅读你的代码的生活更加困难)。

    埃塔: 正如已经在评论中所说,(imho)问题“为什么”的答案?_«通常导致语言设计师(或提出公约的人员)认为是公约所涵盖的重要方面。在Java中,它显然是一个可视区分类(PasCASE)、变量/字段(CAMECASE)和属性(GET~())/SET~()的情况。对于.NET,显然需要立即区分类和接口(我也认为这是一种很好的方法),以及可视化区分属性(pascalcase)和字段(camelcase)访问。

    通常在这种情况下,所有的事情 不 最初被认为对公约很重要的,但在显而易见的方面却不尽如人意。

        3
  •  7
  •   JSBÕ±Õ¸Õ£Õ¹    16 年前

    这就是.NET的命名约定,也是所有标准.NET库都遵循的约定。没有什么需要你在自己的代码中遵循这个约定,但是通常最好遵循你所使用语言的标准。就我个人而言,我更喜欢用小写字母而不是大写字母,但在用C书写时,我仍然使用推荐的.NET样式。

    私人的 成员变量 通常用前导下划线和小写首字母表示,例如 _privateMember . 私人的 方法 遵循与公共方法相同的约定。

        4
  •  3
  •   Dan Bryant    16 年前

    我能想到的一个区别是,它区分了局部委托变量和方法,尽管这可能不是有意的。使用现代的IDES,在任何情况下,都很容易发现呼叫是公共的还是私有的。我对属性、字段和变量的命名约定的看法是,它们允许区分相同“属性”的不同形式,如下所示:

    public class MyClass
    {
        private int _property;
    
        public int Property
        {
            get { return _property; }
        }
    
        public MyClass(int property)
        {
            _property = property;
        }
    }
    

    对于方法,如果您希望对同一概念的不同形式使用相同的名称(而不是重载,重载不需要不同的外壳来区分它们),那么您就没有相同的模糊性。

        5
  •  2
  •   Daniel Dolz    16 年前

    我认为你应该根据自己的喜好/不喜欢来选择你的命名约定,不管别人怎么做(当然,除非付账的人另有说明)。

    重要的是:一旦你选择了一个会议,就坚持下去!

        6
  •  2
  •   Jeff Sternal    16 年前

    最重要的是你 获得 根据这种约定,可以轻松区分方法调用与成员变量和参数访问。

    正如其他人所提到的,这并不一定更好,.NET开发人员所选择并坚持的只是权衡:使其更容易辨别 您正在访问的内容 而不是更容易分辨 可达性级别 你正在访问的内容。

    属性使它特别有价值,这可以解释为什么它在.NET世界中扎根。能够区分属性访问和成员变量访问之间的区别是非常关键的。属性访问器可能正在计算或验证值,并且错误地调用相关的成员变量(反之亦然)会产生细微的错误。

        7
  •  1
  •   Dan Tao    16 年前

    我想指出的是,虽然Pascalcase是.NET中针对私有和公共方法的约定,但考虑到我们正在讨论 私有的 在这里,我认为选择对你更好的东西没有坏处。我的意思是,你确实有一个观点,那就是区分私有方法和公共方法似乎是有好处的。只要你暴露在 客户机 (如果你正在开发一个图书馆)符合惯例,你就是黄金。只需与任何团队成员一起解决如何在内部进行工作。

        8
  •  1
  •   dariom    16 年前

    当我阅读代码时,我倾向于查看整个方法签名。如果我看不到访问修饰符( public , protected , internal , protected internal )那么我可以假设 private (尽管我试图明确说明访问修饰符)。

    不过,你可以自由地采用自己的惯例,尤其是 私有的 方法。

    有一种情况我能想到公约在哪里有用:当使用 C#'s implicit method group conversion syntax . 考虑到这门课, Test :

    public class Test {
        public event EventHandler MyEvent;
    }
    

    如果我创建一个私有的处理方法 MyEvent 并使用C的隐式方法组转换语法添加处理程序小写方法名可能与字段或变量混淆:

    Test test = new Test();
    test.MyEvent += myEventHandler;
    
    private void myEventHandler(object sender, EventArgs e) {
        ...
    }
    
    推荐文章