|
根據一種很好的舊軟件開發做法,應在每個方法的頂部(即實現任何重要行為之前)放置一個條件語句作為屏障。 每個條件語句都檢查輸入值必須驗證的不同條件。 如果條件未通過驗證,代碼會引發異常。 這種模式通常稱為 If-Then-Throw。
但是,有了 If-Then-Throw,我們就可以編寫出高效正確的代碼嗎? 是不是在所有情況下,這都足夠了?
If-Then-Throw 不是在所有情況下都能解決所有問題,這不是什么新觀點。 根據約定設計 (DbC) 是 Bertrand Meyer 幾年前提出的方法,這種方法基于這樣一種想法,即每個軟件都擁有一個正式描述其輸入和輸出的約定。 If-Then-Throw 模式幾乎涵蓋了約定的第一部分,但它完全不涉及第二部分。 任何主流編程語言都不是天然支持 DbC 的。 不過,通過現有的一些框架,您可以嘗試在常用語言(如 Java、Perl、Ruby、JavaScript 語言,當然還有 Microsoft .NET Framework 語言)中采用 DbC 方法。 在 .NET 中,可以通過 .NET Framework 4 中增加的代碼約定庫實現 DbC,該代碼約定庫位于 mscorlib 程序集中。 請注意,該庫可用于 Silverlight 4 應用程序,不能用于 Windows Phone 應用程序。
我相信幾乎每個開發人員都原則上同意,約定優先開發方法是一種極好的開發方法。 不過我認為,在 .NET 4 應用程序中積極使用代碼約定的人并不多,因為 Microsoft 已提供了軟件約定并將其集成在 Visual Studio 中。本文著重介紹約定優先方法在代碼維護和簡化開發方面的優勢。 在開發下一個項目時,您可以借鑒本文觀點向領導推薦代碼約定。 以后,我將在本專欄中對某些方面深入探討,如配置、運行時工具和編程功能(如繼承)。
有關簡單 Calculator 類的推論
代碼約定關乎心態;您不應等到必須設計需要超級體系結構并采用很多前沿技術的大型應用程序時才想起使用代碼約定。 請注意,如果管理不善,再強大的技術也可能帶來問題。 只要熟練掌握代碼約定,代碼約定就適用于幾乎任何類型的應用程序。 我們從一個簡單的類開始,一個經典的 Calculator 類,如下所示:
public class Calculator
{
public Int32 Sum(Int32 x, Int32 y)
{
return x + y;
}
public Int32 Divide(Int32 x, Int32 y)
{
return x / y;
}
}
鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。