首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

IDesign C# 編程規範(二):編碼慣例與實務準則

     編輯:關於C語言

前言

本文為 IDesign C# 編程規範系列第二部分,涵蓋編碼慣例 33 項準則(第 1-33 條),著重於檔案組織、方法設計、錯誤處理、效能與可維護性。

檔案與專案組織

#規範說明
1單一類別單一檔案避免多個類別共用一個 .cs 檔
2單一命名空間單一檔案一個檔案只貢獻類型給一個命名空間
3檔案長度 ≤ 500 行機器產生代碼除外
22最小化公開型別僅必要型別標記 public,其餘 internal
23避免 friend assembly增加組件耦合,改用公開介面
24避免依賴特定路徑載入組件使用相對路徑或 GAC
25最小化 EXE 程式碼業務邏輯放入類別庫,EXE 僅啟動

方法設計原則

#規範說明
4方法長度 ≤ 25 行超過即重構拆分
5參數數量 ≤ 5超過改用結構體/類別封裝
6行寬 ≤ 80 字元提升可讀性與列印相容
30避免布林條件中直接呼叫函式先存區域變數再判斷,利於除錯與閱讀
42方法/屬性比 ≥ 2:1介面/類別應以行為為主,非資料容器

布林條件重構範例

// 避免
if (IsEverythingOK()) { ... }

// 採用
bool ok = IsEverythingOK();
if (ok) { ... }

常數與魔術數字

#規範說明
11絕不硬編碼數值永遠宣告常數
12const 僅用於自然常數如一週天數、圓周率
13readonly 用於執行期常數建構子初始化、不可變參考

const vs readonly 範例

public class MyClass {
    public readonly int Number;        // 執行期決定,建構子賦值
    public MyClass(int someValue) {
        Number = someValue;
    }
    public const int DaysInWeek = 7;   // 編譯期常數,永不變
}

斷言與測試

#規範說明
14每 5 行一個斷言Debug.Assert 驗證前置/後置條件
15白盒測試覆蓋每行逐行走測而非僅黑盒

斷言範例

using System.Diagnostics;
object GetObject() {
    object obj = GetObjectInternal();
    Debug.Assert(obj != null, "GetObjectInternal 不應回傳 null");
    return obj;
}

例外處理鐵律

#規範說明
16僅捕獲可明確處理的例外避免吞沒例外
17重拋保留原始堆疊使用 throw; 而非 throw ex;
18避免錯誤碼回傳改用例外
19避免自訂例外類別優先使用框架內建例外
20自訂例外必繼承 ApplicationException並提供自訂序列化

正確重拋模式

catch (Exception ex) {
    Log.Error(ex);
    throw;  // 保留原始堆疊追蹤
}

列舉設計

#規範範例
26避免明確指派列舉值enum Color { Red, Green, Blue }
27避免指定列舉底層型別預設 int 即可,除非互操作需求

控制流程規範

#規範
28if 永遠使用大括號
29避免三元條件運算子 ?:
31永遠使用零基底陣列
32參考型別陣列顯式逐項初始化

陣列初始化範例

MyClass[] array = new MyClass[100];
for (int i = 0; i < array.Length; i++)
    array[i] = new MyClass();

封裝與屬性

機器產生代碼處理

#規範
33無 public/protected 欄位,改用屬性
#規範
7不手動修改機器產生代碼
7a必須修改時,調整格式符合規範
7b優先用 partial class 隔離手動維護部分

註解哲學

#規範
8避免註解顯而易見的事實
8a程式碼應自說明:良好命名勝過註解
9僅文件化前置條件、演算法洞見
10避免方法層級文件
10aAPI 文件用外部文件
10b方法註解僅作工具提示

總結

這 33 條編碼慣例核心精神:明確、簡潔、可測試、可維護。嚴格限制方法長度、參數數量、檔案大小,強制斷言與白盒測試,將品質內建於開發流程而非事後檢查。配合工具(StyleCop、Roslyn Analyzer、EditorConfig)自動化執行,才能在團隊規模化時保持一致性。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved