<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          你應(yīng)該遵守的C#編碼規(guī)范!

          共 4929字,需瀏覽 10分鐘

           ·

          2021-05-11 16:34

          對(duì)于編程中非代碼文件(例如xml 等),我們目前的最佳指南是代碼風(fēng)格的一致性。編輯代碼文件時(shí),需要保持新增/更改的代碼與原文件中的代碼風(fēng)格一致性。對(duì)于新建的代碼文件,它也應(yīng)符合本編碼規(guī)范。好的編碼規(guī)范,有利于提升代碼的可讀性。.NET Core 框架項(xiàng)目使用的是 Visual Studio 默認(rèn)編碼規(guī)范。

          通常,我們編碼時(shí),應(yīng)遵循 Visual Studio 默認(rèn)編碼規(guī)范中的以下規(guī)則:

          1、接口名、類名、方法名、參數(shù)名和變量名

          所有的接口名、類名和方法名都應(yīng)該使用 PascalCasing 風(fēng)格來定義,對(duì)于接口參數(shù)、構(gòu)造函數(shù)參數(shù)和方法參數(shù),其參數(shù)名則使用 camelCase 風(fēng)格。對(duì)于方法體內(nèi)的局部變量,則使用 camelCase 風(fēng)格。

          2、花括號(hào)

          使用 Allman 樣式的花括號(hào),每個(gè)花括號(hào)在新的一行開始,而且花括號(hào)不進(jìn)行縮進(jìn),花括號(hào)里面的代碼縮進(jìn)。

          while (x == y){   something();   somethingelse();}

          對(duì)于單行語(yǔ)句塊,可以不帶花括號(hào),但需要把它放在同一行

          if (xx == null) xx = new Foo();

          一個(gè)例外是,允許 using 語(yǔ)句嵌套在另一個(gè) using 語(yǔ)句中,從同一縮進(jìn)級(jí)別的下一行開始,即使嵌套的 using 包含受控塊也是如此。

          3、空格

          使用 4 個(gè)空格作為一個(gè)縮進(jìn),而不是使用 tab。

          4、字段

          所有的 internal 和 private 字段使用 _camelCase 風(fēng)格,即在字段添加 _ 前綴,并盡可能使用 readonly 。對(duì)于靜態(tài)字段添加 s_ 前綴,對(duì)于線程靜態(tài)字段添加 t_ 前綴。如果使用了靜態(tài)的字段而且可以設(shè)置 readonly ,需要把 readonly 放在 static 后面(即 static readonly 而不是 readonly static )。公開(public)字段應(yīng)謹(jǐn)慎使用,如果需要公開字段,則應(yīng)使用 PascalCasing 風(fēng)格,并且不帶前綴。

          5、限定

          除非絕對(duì)必要,應(yīng)避免使用 this. 。在擴(kuò)展方法中,需要使用 this 。

          6、訪問修飾

          即使訪問可見性是默認(rèn)的,我們也要始終指定,我們也總是指定可見性(例如, private string _foo 而不是 string _foo )。訪問可見性應(yīng)該是第一個(gè)修飾符(例如, public abstract 而不是 abstract public )

          7、命名空間

          命名空間導(dǎo)入應(yīng)在命名空間聲明之外的文件頂部指定,并且應(yīng)按字母順序排序,但 System.* 命名空間除外,這些命名空間應(yīng)放置在所有其他名稱空間的頂部。

          8、空行

          隨時(shí)避免出現(xiàn)多個(gè)空白行。例如,類型的成員之間不要有兩個(gè)空白行。

          9、多余空格

          避免多余的空格。例如,避免 if(someVar == 0)... ,其中點(diǎn)標(biāo)記為多余空格。如果使用 Visual Studio 輔助檢測(cè),通過啟用 Visual Studio中“查看空格(Ctrl + R,Ctrl + W)”或“編輯->高級(jí)->查看空格”。

          10、隱式類型

          僅在明顯可以知道對(duì)象類型時(shí),可以使用 var ,如 var stream = new FileStream(...) 。在無(wú)法明顯知道對(duì)象類型時(shí),不可以使用 var ,如 var stream = OpenStandardInput() 。

          11、關(guān)鍵字

          使用語(yǔ)言的關(guān)鍵字代替 BCL 類型,如使用 int, string, float 代替 Int32,String,Single 。

          12、常量命名

          我們使用 PascalCasing 風(fēng)格來命名所有常量局部變量和字段。唯一的例外是互操作代碼,其中常量值應(yīng)與您通過互操作調(diào)用的代碼的名稱和值完全匹配。

          13、變量名字符串

          如果使用變量名的常量,必須使用 nameof 關(guān)鍵字。

          14、其它字符

          在源代碼中包含非 ASCII 字符時(shí),需要使用 Unicode 轉(zhuǎn)義序列(\uXXXX)代替文字字符。文字非 ASCII 字符有時(shí)會(huì)被工具或編輯器弄亂。

          15、條件約定

          如果使用條件語(yǔ)句,則遵循以下約定:

          if(source == null) throw new ArgumentNullException("source")if/else if/.../elseif/else if/.../else

          16、代碼格式工具

          我們也可以使用 .NET Codeformatter 工具 來確保代碼庫(kù)隨時(shí)間推移保持一致的樣式,該工具會(huì)自動(dòng)修復(fù)代碼庫(kù)以符合上述準(zhǔn)則。

          17、示例文件

          ObservableLinkedList`1.cs:

          using System;using System.Collections;using System.Collections.Generic;using System.Collections.Specialized;using System.ComponentModel;using System.Diagnostics;using Microsoft.Win32;namespace System.Collections.Generic{   public partial class ObservableLinkedList<T> : INotifyCollectionChanged, INotifyPropertyChanged   {       private ObservableLinkedListNode<T> _head;       private int _count;       public ObservableLinkedList(IEnumerable<T> items){           if (items == null)               throw new ArgumentNullException(nameof(items));           foreach (T item in items)           {               AddLast(item);           }       }       public event NotifyCollectionChangedEventHandler CollectionChanged;       public int Count       {           get { return _count; }       }       public ObservableLinkedListNode AddLast(T value){           var newNode = new LinkedListNode<T>(this, value);           InsertNodeBefore(_head, node);       }       protected virtual void OnCollectionChanged(NotifyCollectionChangedEventArgs e){           NotifyCollectionChangedEventHandler handler = CollectionChanged;           if (handler != null)           {               handler(this, e);           }       }       private void InsertNodeBefore(LinkedListNode<T> node, LinkedListNode<T> newNode){          ...       }               ...   }}

          ObservableLinkedList`1.ObservableLinkedListNode.cs:

          using System;namespace System.Collections.Generics{   partial class ObservableLinkedList<T>   {       public class ObservableLinkedListNode       {           private readonly ObservableLinkedList<T> _parent;           private readonly T _value;           internal ObservableLinkedListNode(ObservableLinkedList<T> parent, T value){               Debug.Assert(parent != null);               _parent = parent;               _value = value;           }           public T Value           {               get { return _value; }           }       }       ...   }}

          全文完,本文部分摘譯自 C# Coding Style  (https://github.com/dotnet/corefx/blob/master/Documentation/coding-guidelines/coding-style.md)。

          聲明:發(fā)布此文是出于傳遞更多知識(shí)以供交流學(xué)習(xí)之目的。若有來源標(biāo)注錯(cuò)誤或侵犯了您的合法權(quán)益,請(qǐng)作者持權(quán)屬證明與我們聯(lián)系,我們將及時(shí)更正、刪除,謝謝。

          作者:彭智勇

          來源

          https://pzy.io/archives/2019/11/csharp-coding-guidelines.html?utm_source=tuicool&utm_medium=referral







          回復(fù) 【關(guān)閉】學(xué)關(guān)
          回復(fù) 【實(shí)戰(zhàn)】獲取20套實(shí)戰(zhàn)源碼
          回復(fù) 【被刪】學(xué)個(gè)
          回復(fù) 【訪客】學(xué)
          回復(fù) 【小程序】學(xué)獲取15套【入門+實(shí)戰(zhàn)+賺錢】小程序源碼
          回復(fù) 【python】學(xué)微獲取全套0基礎(chǔ)Python知識(shí)手冊(cè)
          回復(fù) 【2019】獲取2019 .NET 開發(fā)者峰會(huì)資料PPT
          回復(fù) 【加群】加入dotnet微信交流群

          又來一個(gè)神奇的網(wǎng)站!


          人人影視字幕組涼了,這款美劇APP不能錯(cuò)過!


          瀏覽 67
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  亚洲人妻系列 | 天天操天天干天天插 | 欧美成人性爱影院 | 日韩综合天堂视频 | 国产精品MV |