C#编码规范

记录 编码约定 学习过程。

 

命名空间约定

如果没有使用using指令,项目也没有默认导入合适的命名空间,访问这些命名空间或者类型时,则需要“完全限定名称”。

namespace ConsoleApp4
{
    class Program
    {
        static void Main(string[] args) 
        {
            // 在这里System.Diagnostics是“完全限定名称”
            var traceSource = new System.Diagnostics.TraceSource("");
        }
    }
}

如果使用了Using指令,则不需要“完全限定名称”。

using System.Diagnostics;

namespace ConsoleApp4
{
    class Program
    {
        static void Main(string[] args)
        {            
            var traceSource = new TraceSource("");
        }
    }  
}

 

代码布局约定

  1. 不轻易更改编辑器的设置,通常使用默认的,特别是格式设置和制表符。
    C#编码规范
  2. 每行一条语句,每行一个声明。
    string[] strs = new string[] { "AA","BB","CC"};
    string str = "hello";
    int num = 4;
    if (num == 9)
    {
    
    }
  3. 一行写不完的语句,分开写则需要缩进一个制表符位。
    string[] strs = new string[] { "AA","BB","CC"};            
    var query = strs.Where(x => x.Length == 2 && x.Contains("B")).
        Select(x => new { Name = x, Age = 8 });
  4. 属性和方法之间至少一个空行
    public int MyProperty { get; set; }
    public int MyProperty1 { get; set; }
    
    void Test()
    {
    
    }
  5. 使用括号突出表达式的字句。
    int val1 = 1;
    int val2 = 3;
    int val3 = 4;
    
    if ((val1 > val2) && (val1 > val3))
    {
        
    }
    

注释约定

单独的行,而非代码末尾;大写字母开头,断行换小写;句点结束注释文本;注释和文本之间留一个空格。

不要在注释周围创建格式化的星号块???没看懂。

下面放一段ILSpy源码

/// <summary>
/// Sets the value of a dependency property on <paramref name="targetObject"/> using a markup extension.
/// </summary>
/// <remarks>This method does not support markup extensions like x:Static that depend on
/// having a XAML file as context.</remarks>
public static void SetValueToExtension(this DependencyObject targetObject, DependencyProperty property, MarkupExtension markupExtension)
{
    // This method was copied from ICSharpCode.Core.Presentation (with permission to switch license to X11)
    
    if (targetObject == null)
        throw new ArgumentNullException(nameof(targetObject));
    if (property == null)
        throw new ArgumentNullException(nameof(property));
    if (markupExtension == null)
        throw new ArgumentNullException(nameof(markupExtension));
    
    var serviceProvider = new SetValueToExtensionServiceProvider(targetObject, property);
    targetObject.SetValue(property, markupExtension.ProvideValue(serviceProvider));
}

 

C#编码规范

上一篇:Windows10 OpenGL安装及配置


下一篇:Redis + keepalived 高可用群集搭建