天天看點

架構,改善程式複用性的設計~第四講 方法的重載真的用不到嗎?

細心的朋友一定會非常關注net frameworks的源代碼,即使隻能看到它内部方法的定義,也足夠了,在System.Web.Mvc這個命名空間下定義了很多關于MVC架構的東西,我們就以它為例來說一下方法重載吧!

重載的好處:

1 對方法調用的程式員來說,它是友好的(程式員隻關心自己調用的方法簽名即可,不用管參數為NULL怎麼辦這些邏輯)

2 對于代碼維護量來說,它是容易的(核心代碼隻放在參數簽名最多的方法中)

3 對于代碼擴充來說,它是直接的(隻要修改核心方法代碼即可,而不用一個方法一個方法的去COPY)

以下是InputExtensions類下的幾個方法:

我的項目中的方法重載:

以下是一個通過狀态枚舉類型,産生一個下拉清單框的擴充方法,它有兩個重載方法,第一個是産生下拉清單 (public static MvcHtmlString StatusForSelectList(this HtmlHelper html)),第二個是在産生下拉清單時,給它設一個預設值( public static MvcHtmlString StatusForSelectList(this HtmlHelper html, int selectedValue)),這時使用方法重載就更友好,而另一種作法就是直接用一個方法代替,這對于調用方的程式員來說是不友好的。

下面是兩個方式的實作:

不友好的方式:

下面這種方式是我們提倡的,也是微軟主推的:

這使得代碼很清晰,職責分明!

繼續閱讀