日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

C# Idioms: Safely方法

發布時間:2023/11/27 生活经验 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C# Idioms: Safely方法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
(原文排版格式 http://www.marshine.com)



名稱

Safely Method

意圖

通過方法保證返回有效(不為空引用,null或Nothing)的對象或拋出異常,當存在多個調用者時簡化調用者需要處理null返回值的代碼。

動機

一個存放對象的集合或類似功能的容器類,提供了根據鍵值返回集合成員的接口,如果不存在指定鍵值的項,則返回一個空引用。例如根據Student的SID(學號)從StudentManager返回Student對象,如果存在指定的學號,則返回一個有效的Student對象,否則返回null。大多數情況下調用者需要根據是否null值決定如何處理,如果在程序的多處都需要假定返回的一定是非null的有效對象,否則程序必須執行特殊的路徑,如拋出異常,如下:

Student student = studentColleciont.GetStudentByID("13432");
if (student == null) {
// null處理代碼,如拋出異常
}

顯然在每一個調用處書寫這些代碼會造成代碼的重復,即便是將處理過程放在一個單獨的null值處理方法中,調用方仍然需要調用null值處理方法,并且null值處理方法顯得很孤立,影響程序的結構。

產生這個問題的關鍵是因為調用者依賴于方法的返回值,并強化了方法定義的后置條件(不允許為null值),但是并不能修改原來方法定義的后置條件,因為其它地方需要保持原來的 定義。解決辦法是提供擴展了原方法契約(Contact,根據Design by Contact的思想,方法定義就是一個調用者和實現者之間的契約)的新方法,因為擴展方法要保證返回適用的值(使用“適用”,是因為null并非無效,只是不適應當前調用處),所以將它稱之為Safely方法。Safely方法保證返回 適用的值,并提供統一的異常處理方式,調用者不需要再處理返回null對象的情況。

適用性

多個調用者需要依賴方法返回適用的值。
無法修改原來的接口,原來的方法契約被更多的地方使用。
調用者不直接處理不適用值(如通過異常傳遞給上層調用者)。
結構

在原來的集合或容器上增加Safely方法,方法名由原來的方法名加Safely后綴:

XXXSafely(...);
GetXXXSaftly(...);

效果

簡化了調用者對不適用返回值的處理,消除了調用者冗余的不適用值處理代碼,并且能夠更好的維護不適用值的處理代碼。

實現

因為Safely方法只是在原來返回值方法上的契約擴展,因此Safely方法將請求傳遞給原來的方法,然后增加不適用值的處理。

代碼示例

我們在StudentManager上增加一個GetStudentByIDSafely方法,當指定的Student不存在時,返回一個自定義的異常NotExistedStudentException,更上層的代碼可以通過捕獲異常來處理:

public Student GetStudentByIDSafely(string sid)
{
Student student = GetStudentByID(sid);
if (student == null)
{
// 拋出一個特定的異常
throw new NotExistedStudentException(sid);
}
return student;
}

語言相關性

語言無關。

相關模式

Nullable Object模式也被用于處理null值。同Nullable Object模式的差異在于,Safely方法保證返回不為null的對象, 而Nullable模式的目的是使null值和其它值一樣使用統一的處理方式,如調用ToString。Nullable將在Microsoft .Net Framework 2.0中得到直接支持(System.Nullable<T>類)。??

總結

以上是生活随笔為你收集整理的C# Idioms: Safely方法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。