MDA/MDD/TDD/DDD/DDDDDDD
          posts - 536, comments - 111, trackbacks - 0, articles - 0
            BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理
          契約式設(shè)計(jì)的本意很簡(jiǎn)單,就是在設(shè)計(jì)和編碼階段向面向?qū)ο蟪绦蛑屑尤霐嘌裕╝ssertion)。而所謂斷言,實(shí)際就是必須為真的假設(shè),只有這些假設(shè)為 真,程序才可能做到正確無誤。契約式設(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)使用某種編程語言寫在代碼里(而不是僅僅通過文檔加以聲明),只有這樣:
          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è)看,多了也沒用),權(quán)當(dāng)擴(kuò)充知識(shí)面了。使用的話,就當(dāng)斷言了,設(shè)立若干前置條件后置條件就夠了,這樣足以有效提高對(duì)程序的置信度;什么不動(dòng)點(diǎn),F(xiàn)rame Rules,那是理論上的東西,吃力不討好,有閑工夫的才時(shí)候可以用用(得到的效果和付出的努力不成比例)。

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

          評(píng)論

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

          2009-09-16 10:33 by alex
          謝謝你提供的各種網(wǎng)站鏈接信息。呵呵!
          主站蜘蛛池模板: 宁蒗| 金沙县| 什邡市| 沽源县| 建湖县| 陵川县| 定陶县| 合水县| 河北省| 磐安县| 弥渡县| 大安市| 永嘉县| 潜山县| 长垣县| 安徽省| 武义县| 平山县| 甘德县| 丰顺县| 池州市| 屯留县| 共和县| 方城县| 英超| 余庆县| 三门县| 和硕县| 马山县| 高清| 西畴县| 石景山区| 仁寿县| 高邑县| 嘉兴市| 长汀县| 通城县| 郸城县| 吉首市| 昌宁县| 大化|