關於DBC的一些思考與討論

2021-08-29 04:16:17 字數 782 閱讀 2195

今天與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 的時間複雜度修改與詢問字首 相比線段樹更好寫 常數更小 不過侷限性很大 不能用於維護最大最小值之類的情況 最常用的應用 我用過的 大概有 單點修改區間查詢 區間修改單點查詢 區間修改區間查詢 離散化權值求逆序對 以上內容 洛谷金秋講義 上面已經把樹狀陣列定義以及修改查詢方法...