Wednesday, January 05, 2005
Security Rules with Generic Functions: Half the Code, Seven Fewer Interfaces
爲了用泛型函數代替適配器(adaptation),我僅僅重構了peak.security的訪問控制規則框架。結果代碼量減少了一半還多(老版本480行,而現在140行),且僅用了一個接口(老版本是八個)。老版本廣泛使用接口來實現適配器,而新版用的是更加靈活的泛型函數。
然而,泛型函數不一定總能代替適配器和接口,從技術角度看,泛型函數憑藉接口的適配和方法調用可以做任何事,但某些時候接口+適配器對於實際情況來說卻是更好的一個方法,或者說是更便捷、更有表現力的方式,特別是在文檔方面(例如,我在新的實現中預留的接口純粹是出於文檔化目的)。
可在編寫新的規則系統過程中,我確實揪出了一些泛型函數的Bug。慶幸的是都不怎麼嚴重。但是當有Bug出現時我就會對代碼感覺良好,若沒有發現Bug我會覺得“這些東西不應該如此這般正確”。那些修復過Bug的代碼的健壯性會更好,雖不那麼純潔了,但更經得起風浪。所以說回來,即使是進行過大量單元測試,有時你仍不知道是否測試到點子上,直至日後的某一天。
(原文鏈接網址:http://dirtsimple.org/2005/01/security-rules-with-generic-functions.html)