C#格式化约定

cho*_*bo2 2 .net c# naming-conventions

在我读过的一本书中,他们使用大写字母表示公共方法和财产.我知道还有一些其他约定,比如你在私有变量前加上"_".对我来说,我不喜欢这种方式,并且喜欢这种方式更好,但只是想知道方法中的东西.

所以

public void MyMethod()
{
}

public string MyProperty {get; set;

}
Run Code Online (Sandbox Code Playgroud)

并为私人

private void myMethod()
{
}
Run Code Online (Sandbox Code Playgroud)

但是方法怎么样?

喜欢

public void MyMethod()
{
   string MyVariable = null;
   // or
   string myVairable = null;
}
Run Code Online (Sandbox Code Playgroud)

如果你有一个类似的全局变量怎么样

public class Test
{
   private string bob;

   public Test()
   {
      bob = null;
   }
}
Run Code Online (Sandbox Code Playgroud)

它应该是小写的(因为它是私有的)?另外在侧面说明它会更好地使它成为一个属性,而不是公共财产只是让它私有.

Joe*_*Joe 5

以下是您的代码示例,如果它们遵循官方Microsoft代码样式指南(由StyleCop和FxCop强制执行)

public void MyMethod()
{
}

public string MyProperty { get; set; }

private void MyMethod()
{
}

public void MyMethod()
{
   string myVariable = null;
}

public class Test
{
   private string bob;

   public Test()
   {
      this.bob = null;
   }
}
Run Code Online (Sandbox Code Playgroud)

规范中的一些亮点:所有字段都应该是private小写(除非它们是常量).无论访问权限如何,所有方法都应该是大写的.如果您想公开一个字段(即使其成为publicprotected),请使用一个属性(如果它受保护或公开,则应该大写).如果你有属性的自动getters和setters(即just get;set;),它们可以在一行上,否则在单独的行上(如果有更多的代码).始终命名以小写az开头的字段,而不是下划线.大括号应该换行.始终引用非静态成员(即属性,方法,字段),this.以区别于变量并避免歧义.

有一个巨大的列表,但这些与您的示例最相关.看看code.msdn.microsoft.com/sourceanalysis

你在问题中称之为"全球"的事实上是一个"领域".这些应该永远不会暴露(正如我上面所说的那样),因为你实际上暴露了你的实现,你的行为是应该在接口上暴露给类型的.属性允许您指定一个界面,即使它们现在已经实现为自动属性,您也可以在不更改界面的情况下更改getters和setters.