今天與buaawhl討論dj語言的事情時,對於dbc有了更深入的思考與認識。
具體的討論過程就不描述了,說說我的思考的結論吧。
1、檢查
dbc的核心是檢查、更加嚴格的檢查。這其實是強型別語言之後,進一步的增強。
一段程式,不但應該通過注釋告訴別人,自己需要什麼資料,自己能夠做些什麼。
更應該直接用**進行強制的檢查,這樣的說明效果會更好,程式執行也會更加穩定。
2、對於檢查的分類
a.型別檢查:僅僅對於輸入資料與返回資料的型別進行檢查
b.前置檢查:檢查輸入資料的合法性——是否合格,可以認為是更加嚴格的輸入型別檢查,但是還可以包括多引數的關聯檢查。比如,
假設a為true,則b必須大於10,否則,b必須大於20。這樣的複雜前置檢查條件。
c.後置檢查:檢查返回資料的合法性——是否符合預期。這個預期其實也有兩個級別,一是首先要符合返回型別定義,二是要符合輸入資料的實際情況。
d.測試用例:這是更為嚴格的,也更為靈活的檢查。前面的三種檢查都可以在執行期始終起作用,而測試用例,則只需要執行通過一次即可。
3、dj所能支援的dbc形式
a.更好的型別檢查機制,不再基於模模糊糊的命名繼承推導,而是基於實實在在的邏輯判例。
b.由於能夠支援複雜判例的型別定義,因此可以實現前置條件定義的重用。但是對於「多引數關聯的前置檢查,則並不適用」,在我看來,如此複雜的前置條件,根本就應該正兒八經的寫在方法的正文裡,而不是搞複雜的前置檢查。
c.後置檢查,通過check:和checkmethod:支援。
d.通過test:支援。
關於Session的一些討論
眾所周知,session是jsp的九大內建物件之一,也是伺服器二次識別客戶端的橋梁,它的生命週期非常長,一般都是存在於乙個會話 同一瀏覽器 之中,與 天地同壽 伺服器 有如下例子 1 在不關閉瀏覽器的情況下,建立乙個session,你始終可以訪問到這個session。2 在不關閉瀏覽器的情況下,建立...
關於shiro許可權的一些討論和自身思考問題的方式
最近又重新重新看了一遍shiro的許可權框架,繼續加深了解 但是在和同事的討論過程中,我覺得使我的收益更大 眾所周知,許可權一般是有5張表的,role,user,permission,role user,role permission 可能我是比較注重這個規範的,但是同事的一番話語使我幡然醒悟 要在...
關於樹狀陣列的一些討論
樹狀陣列用於在log n 的時間複雜度修改與詢問字首 相比線段樹更好寫 常數更小 不過侷限性很大 不能用於維護最大最小值之類的情況 最常用的應用 我用過的 大概有 單點修改區間查詢 區間修改單點查詢 區間修改區間查詢 離散化權值求逆序對 以上內容 洛谷金秋講義 上面已經把樹狀陣列定義以及修改查詢方法...