契約式程式設計就是說在開發中規定一套變數,函式以及資料的規則,所有**都遵循此規則進行開發.這種方法其實是無處不在的.因為所有的**都是有規則的.這些規則都可以稱之為契約.
筆者在進行一些開發之後,對於web開發中的資料查詢,資料更新,資料條件的通訊,痛恨之極,因為要根據需求的不同細緻按照行為的不同去分別用不同的方法處理這些資料.比如有這樣的資料傳向後台
僅僅看這些資料,我們無法認定這些資料是讓後台查詢的還是更新的.因為這和對應的行為有關,如果行為是login,那應該是查詢,如果行為是updatepw那應該是更新.
那能不能找到一種方法,制定乙個契約,來讓這件事情更方便一些?
筆者想到了一種方法:
基於大小寫的契約
對於資料庫欄位名來說,統一大小寫不是問題
所以可以這樣設計契約(反之亦然): 1.
純小寫表示
資料庫查詢條件 2
.純大寫表示
資料庫提交資料
3.大小寫混合表示非資料庫字段
當然**要配套的檢查大小寫的區別.具體**不是問題,這和你的應用架構有關,不過此契約可以簡化很多東西,關鍵這是一種可以模式化的契約
*****====ps*****===
我來舉幾個例子:
表示查詢條件為 name='you' and pw='1234',但是沒有規定返回的字段範圍 這回就有了,很明顯filds是大小寫混合的,所以經**處理後可以用來確定要返回的字段(當然要處理許可權的問題了,這個不在本文中討論),這樣就可以的到這樣的語句(當然表的名字和請求的行為是繫結的)select name,id,age from youtabl where name='you' and pw='1234'
很明顯這個就可以對應update語句了update youtable set pw=1234 where name='you'
同理這個可以對應insert into youtable (name,pw) values('you',1234)
關鍵:由於契約資料的原因,這些語句都可以通過一定的演算法自動生成
契約式程式設計
契約是減少大型專案成本的突破性技術。契約由先驗條件 後驗條件 錯誤和不變數等概念組成。契約可以而加到 c 中而無需對語言加以改造,但是卻十分笨拙且不一致。在語言內部支援契約的目的是 給契約乙個一致的觀感 提供工具支援 使編譯器能夠根據從契約中收集的資訊生成更好的 易於管理並強制實行契約 處理契約繼承...
契約式程式設計與防禦式程式設計
事情的來由還要從幾十幾億年前的一次星球大 說起,sorry,背錯台詞了,是從幾天前討論介面返回資料和幾個月前討論課件本地資料結構說起,簡單的說,就是碰到約定好的內容出現異常,是我們在程式中內部作相容處理,還是丟擲去。打個比方,我們要解析一段json,約定這個json的格式,只能是正常格式,或者是空,...
契約式程式設計與防禦式程式設計
事情的來由還要從幾十幾億年前的一次星球大 說起,sorry,背錯台詞了,是從幾天前討論介面返回資料和幾個月前討論課件本地資料結構說起,簡單的說,就是碰到約定好的內容出現異常,是我們在程式中內部作相容處理,還是丟擲去。打個比方,我們要解析一段json,約定這個json的格式,只能是正常格式,或者是空,...