C# 正确的属性命名

C# 正确的属性命名,c#,naming-conventions,C#,Naming Conventions,在下面的人为示例中,命名我的“[Nn]ame”属性的正确方法是什么?NET中的所有内容似乎都是某种形式的Pascal案例。对属性名称使用驼峰大小写会被认为是“糟糕的形式”吗?我读了这本书,他们说用帕斯卡 案例我真的很讨厌帕斯卡的案子,而且似乎就是这样 一般公认的标准是什么(只是MS指南)还是无关紧要?如果我在这里用驼色的箱子,我会坏吗?蒂亚 using System; namespace Properties { class Program { static void Main()

在下面的人为示例中,命名我的“[Nn]ame”属性的正确方法是什么?NET中的所有内容似乎都是某种形式的Pascal案例。对属性名称使用驼峰大小写会被认为是“糟糕的形式”吗?我读了这本书,他们说用帕斯卡 案例我真的很讨厌帕斯卡的案子,而且似乎就是这样

一般公认的标准是什么(只是MS指南)还是无关紧要?如果我在这里用驼色的箱子,我会坏吗?蒂亚

using System;

namespace Properties {
  class Program {
    static void Main() {

      var tester = new Tester();
      tester.Name = "jmquigley";
      tester.name = "another jmquigley";

      tester.Show();
    }
  }

  class Employee {
    public string Name { get; set; }
    public string name { get; set; }

    public void Show() {
      Console.WriteLine("Name = {0}", Name);
      Console.WriteLine("name = {0}", name);
    }
  }

  class Tester : Employee {
  }
}

注意:我在这里使用继承只是为了查看在使用属性时如何处理属性(查看是否所有内容都像字段一样工作)。

Microsoft指南在整个.Net Framework中使用,并得到StyleCop、FXCop和ReSharper等工具的支持。将camel-case用于属性而不是字段只会让大多数C#开发人员感到困惑,他们的期望正好相反。

camel-case通常是标准的处理方式。虽然如果你正在做一个个人项目,或者出于其他原因,你可以选择自己设定标准,但这可能并不重要

什么是普遍同意的 标准(是否只是MS指南)

是的,普遍认可的标准是微软指南

还是没关系

您的代码在不遵循指导原则的情况下运行良好,但我会遵循约定,如果:

  • 你是团队的一员
  • 您正在为雇主生成代码
  • 您正在生成开放源代码
  • 您希望能够更轻松地在线阅读他人的代码
  • 你想在将来做以上任何一项吗

标准的奇妙之处在于有那么多可供选择


坦白说,这没什么大不了的。如果您有ReSharper,它的默认设置将是PascalCase Name属性,因为它是一个公共属性。

当然,您可以按照自己的意愿编写代码。。。只要确定,如果你不把所有的东西都大写,其他每一个看你的代码的.NET开发人员都会认为它看起来很奇怪


此外,任何用C语言编程的工作都可能需要你使用大写字母。

公认的标准是Pascal case

关于这一主题有许多指南:


  • 如果您的代码有可能被其他人看到,我建议您遵循Pascal案例指南

    Pascal case在.NET世界中占主导地位

    没有什么强迫您在自己的代码中使用Pascal case,但最终您将混合使用Pascal case(框架类型)和camel case(您自己的类型)。imo认为,不一致性比必须使用pascal case更糟糕


    此外,如果您是一个更大团队的一员,或者某个程序员同事将来可能需要维护您的代码,那么这是符合现状的另一个很好的理由。

    标准方法是属性使用Pascal大小写,字段使用带下划线的驼峰大小写

    public string Name { get; }
    private string _name;
    

    我在野外看到的是,属性通常是帕斯卡的。Pascal case通常用于属性、方法和类


    关于惯例,需要记住的重要一点是,它是关于缓解两个人之间的沟通障碍,而不是个人偏好。在最初编写Java之后,当我第一次启动C#时,转到Pascal案例的世界是非常奇怪的,但是回顾过去,我应该更早地采用这些约定。

    e.g.这可能会被视为重复,但这并不“重要”,只要你是一致的,但在大多数MS开发人员使用相同标准的情况下,那么这是错误的。拥有两个具有相同范围和名称的属性(只是大小写不同)无论如何都会让人困惑。哦,我不会在实践中使用那样的“[Nn]ame”。为了便于讨论,我只想同时使用这两种命名类型。我读了一堆帖子,他们没有回答我的问题,所以我不认为这是一个骗局(但我想我还没决定,呵呵),这让我困惑,让我非常想改变它。这就像是一个瘙痒,我必须抓挠它。如果它是你自己的代码,没有人会读它,不管你使用什么情况:)你认为是一次性的应用程序在几年后,被其他开发人员,或者在技术几乎死后很久仍然在使用的次数:几乎所有的人。我的机器上仍然安装了VB6。天哪,我讨厌它。@jamietre:我指的是自己的代码,就像你在家里业余时间做的事情一样。真的。我真的只是想抱怨,因为就在这个时候,我不得不修复一个8年的VB6应用程序中的一些糟糕的东西,不幸的是我写了它。那时候当然很精彩,我也是来自java世界。方法和字段具有名称约定似乎有点“异类”。如果有帮助,可以将公共属性访问器看作不仅仅是公共字段。在基本情况下,如果它们只是空的get/set,那么它们就是公共字段。但他们比这更强大;您可以将大量逻辑编码到这些get/set函数中,因此它们的行为与方法非常相似。这可能就是为什么惯例是将财产资本化。