wednesday, january 05, 2005
security rules with generic functions: half the code, seven fewer inte***ces
為了用泛型函式代替介面卡
(adaptation)
,我僅僅重構了
peak.security
的訪問控制規則框架
。結果**量減少了一半還多(老版本
480行,而現在
140行),且僅用了乙個介面(老版本是八個)。老版本廣泛使用介面來實現介面卡,而新版用的是更加靈活的泛型函式。
然而,泛型函式不一定總能代替介面卡和介面,從技術角度看,泛型函式憑藉介面的適配和方法呼叫可以做任何事,但某些時候介面
+介面卡對於實際情況來說卻是更好的乙個方法,或者說是更便捷、更有表現力的方式,特別是在文件方面(例如,我在新的實現中預留的介面純粹是出於文件化目的)。
可在編寫新的規則系統過程中,我確實揪出了一些泛型函式的
bug。慶幸的是都不怎麼嚴重。但是當有
bug出現時我就會對**感覺良好,若沒有發現
bug我會覺得「這些東西不應該如此這般正確」。那些修復過
bug的**的健壯性會更好,雖不那麼純潔了,但更經得起風浪。所以說回來,即使是進行過大量單元測試,有時你仍不知道是否測試到點子上,直至
日後的某一天
泛型函式Func
泛型函式,即可以接受任何型別的通用函式 有where約束除外 例如 呼叫getcachedata,那第二個委託引數就是func,這個函式返回值也是int 呼叫getcachedata,那第二個委託引數就是func,這個函式返回值是string public static intstrtoint st...
5 4 4 寫泛型函式
5.4.4 寫泛型函式 大多數使用泛型型別的函式或方法都是高階的,意味著它們取另乙個函式作為引數值。這是乙個重要的主題,我們會專門用一整章 第 6 章 來討論,但我們已經可以寫乙個泛函式,而不用誤入高階領域。我們將建立乙個函式,它取乙個選項型別,並返回包含的值。如果這個選項型別不包含乙個值,該函式將...
函式的過載與泛型函式
include iostream using namespace std template 泛型設計 void print elemtype pbegin,elemtype pend 函式的過載 void print int pbegin,int pend void print char pbegi...