MDA/MDD/TDD/DDD/DDDDDDD
          posts - 536, comments - 111, trackbacks - 0, articles - 0
            BlogJava :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理
          契約式設(shè)計(jì)的本意很簡(jiǎn)單,就是在設(shè)計(jì)和編碼階段向面向?qū)ο蟪绦蛑屑尤霐嘌裕╝ssertion)。而所謂斷言,實(shí)際就是必須為真的假設(shè),只有這些假設(shè)為 真,程序才可能做到正確無(wú)誤。契約式設(shè)計(jì)的主要斷言包括先驗(yàn)條件(precondition)、后驗(yàn)條件(postcondition)以及不變式 (invariant):
          ● 先驗(yàn)條件針對(duì)方法(method)1,它規(guī)定了在調(diào)用該方法之前必須為真的條件。
          ● 后驗(yàn)條件也是針對(duì)方法,它規(guī)定了方法順利執(zhí)行完畢之后必須為真的條件。
          ● 不變式針對(duì)整個(gè)類,它規(guī)定了該類任何實(shí)例調(diào)用任何方法時(shí)都必須為真的條件。
          斷言應(yīng)使用某種編程語(yǔ)言寫在代碼里(而不是僅僅通過(guò)文檔加以聲明),只有這樣:
          1)對(duì)于程序員而言,它們才有意義,同時(shí)能夠提供優(yōu)質(zhì)的.有用的文檔.
          2)能夠在運(yùn)行時(shí)對(duì)它們進(jìn)行檢測(cè),更好地支持測(cè)試和調(diào)試工作.

          charon的建議。如果你對(duì)斷言/防錯(cuò)程序不怎么熟悉,而且也搞不到那本"編程精粹"。買《Design by Contract by Example》這本書看看。如果已經(jīng)熟悉了,到書店看個(gè)半小時(shí)到一小時(shí)就夠了(例子只要挑個(gè)一個(gè)看,多了也沒(méi)用),權(quán)當(dāng)擴(kuò)充知識(shí)面了。使用的話,就當(dāng)斷言了,設(shè)立若干前置條件后置條件就夠了,這樣足以有效提高對(duì)程序的置信度;什么不動(dòng)點(diǎn),F(xiàn)rame Rules,那是理論上的東西,吃力不討好,有閑工夫的才時(shí)候可以用用(得到的效果和付出的努力不成比例)。

          我的總結(jié):開(kāi)始看了名字以為是按約定進(jìn)行設(shè)計(jì)的意思,后來(lái)大概看了看,了解了一點(diǎn)點(diǎn),但決定不再在上面花時(shí)間了,測(cè)試驅(qū)動(dòng)開(kāi)發(fā)明顯要更為成熟和實(shí)用。

          評(píng)論

          # re: 契約式設(shè)計(jì)Design by Contract[未登錄](méi)  回復(fù)  更多評(píng)論   

          2009-09-16 10:33 by alex
          謝謝你提供的各種網(wǎng)站鏈接信息。呵呵!
          主站蜘蛛池模板: 嘉祥县| 琼结县| 荆门市| 宜州市| 冷水江市| 万荣县| 仁怀市| 阿图什市| 莱芜市| 汽车| 邳州市| 尤溪县| 太和县| 龙江县| 长岭县| 兰西县| 年辖:市辖区| 庆元县| 巴彦淖尔市| 邓州市| 吴川市| 台安县| 申扎县| 普安县| 虞城县| 鄂托克旗| 察雅县| 安阳县| 呼图壁县| 邵阳县| 离岛区| 思茅市| 霍山县| 井研县| 股票| 昆山市| 诸城市| 饶平县| 达孜县| 恭城| 咸宁市|