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

Effective C# 原則 24:選擇宣告式編程,以屬性替代命令式邏輯

     編輯:關於C#

宣告式 vs 命令式:意圖與實作的分離

  • 命令式:撰寫方法逐步指示「如何做」。
  • 宣告式:以屬性宣告「要做什麼」,執行時期由執行環境自動實現行為。

C# 中套用屬性即為宣告式編程。優點:程式碼簡潔、可讀性高、錯誤少、維護易。

經典範例:WebMethod 屬性

[WebMethod]
public string HelloWorld() => "Hello World";

ASP.NET 執行時期透過反射偵測屬性,自動產生 WSDL、SOAP 端點、測試頁面。開發者無需手寫任何基礎設施代碼。

自訂屬性實作通用排序:DefaultSortAttribute

[AttributeUsage(AttributeTargets.Class | AttributeTargets.Struct)]
public class DefaultSortAttribute : Attribute {
    public string Name { get; set; }
    public DefaultSortAttribute(string name) => Name = name;
}

[DefaultSort("Name")]
public class Customer { public string Name { get; set; } ... }

通用比較器 GenericComparer 透過反射讀取屬性,動態比較指定屬性:

customerList.Sort(new GenericComparer(typeof(Customer)));

修改屬性參數即可變更排序行為,無需修改演算法代碼。

適用情境與決策指南

  • 框架內建屬性(序列化、條件編譯、WebMethod 等)優先使用。
  • 需在多型別重複實作相似行為時,自訂屬性 + 反射可大幅減少代碼與錯誤。
  • 僅需一兩次特定行為,命令式寫法更直接。

核心價值

宣告式編程將「行為定義」與「演算法實作」分離。單一宣告驅動行為變更,而非分散在多處演算法中。打造更易讀、易維護、錯誤更少的代碼庫。

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