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

Effective C# 原則 24:優先選擇宣告式程式設計而非命令式程式設計(一)

     編輯:關於C語言

宣告式與命令式程式設計

與命令式程式設計相比,宣告式程式設計用更簡單、清楚方法描述軟體行為。宣告式程式設計即用宣告定義程式行為,而非寫指令。C# 中(如大多數語言),大多數程式是命令式:在程式中寫方法定義行為。C# 中用特性即宣告式程式設計。添加特性到類別、屬性、資料成員、方法,.NET 執行期為你添加行為。宣告目的:簡單易用、易讀、易維護。

WebMethod 特性範例

寫第一個 ASP.NET Web 服務時,精靈產生:

[WebMethod]
public string HelloWorld() { return "Hello World"; }

VS.NET Web 服務精靈添加 [WebMethod] 特性到 HelloWorld(),定義其為 Web 方法。ASP.NET 執行期為你產生程式碼回應此特性:產生 WSDL 文件描述 SOAP 調用 HelloWorld;支援執行期發送 SOAP 請求;動態產生 HTML 頁面讓你在 IE 測試。全部皆 WebMethod 特性回應。特性宣告意圖,執行期確保支援。使用特性省時、少錯。

執行期用反射發現特性

非神話。ASP.NET 執行期用反射斷定類別中哪些方法是 Web 服務,發現時添加必要框架程式碼,使任何添加程式碼的方法成為 Web 方法。

.NET 類庫眾多特性

[WebMethod] 只是 .NET 類庫眾多特性之一,幫助更快建立正確程式。有些特性幫助建立可序列化型別(原則 25)。原則 4 特性控制條件編譯。這些情況下,宣告式程式設計寫出更快、少錯程式碼。

使用框架內建特性

應用 .NET 框架自帶特性宣告意圖,比自己寫好:花費時間少、更簡單、編譯器不會出錯。

建立自訂特性:DefaultSort 範例

若內建特性不適合需求,可定義自有特性並用反射用宣告式結構。範例:建立特性關聯程式碼,讓使用者用特性建立預設可排序型別。示範如何添加特性,定義客戶集合排序方式:

[DefaultSort("Name")]
public class Customer
{
    public string Name { get { return _name; } set { _name = value; } }
    public decimal CurrentBalance { get { return _balance; } }
    public decimal AccountValue { get { return calculateValueOfAccount(); } }
}

DefaultSort 特性、Name 屬性,暗示任何 Customer 集合應以客戶名字排序。DefaultSort 非 .NET 框架一部分,為實現它,建立 DefaultSortAttribute 類別:

[AttributeUsage(AttributeTargets.Class | AttributeTargets.Struct)]
public class DefaultSortAttribute : System.Attribute
{
    private string _name;
    public string Name { get { return _name; } set { _name = value; } }
    public DefaultSortAttribute(string name) { _name = name; }
}
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved