青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

concentrate on c/c++ related technology

plan,refactor,daily-build, self-discipline,

  C++博客 :: 首頁(yè) :: 聯(lián)系 :: 聚合  :: 管理
  37 Posts :: 1 Stories :: 12 Comments :: 0 Trackbacks

常用鏈接

留言簿(9)

我參與的團(tuán)隊(duì)

搜索

  •  

最新評(píng)論

閱讀排行榜

評(píng)論排行榜

// 摘自代碼大全2第九章
創(chuàng)建類和子程序的步驟概述.
1 開(kāi)始
2 創(chuàng)建類的總體設(shè)計(jì)
3 創(chuàng)建類中的子程序
4 復(fù)查并測(cè)試整個(gè)類
5 完成
其中3與4之間要進(jìn)行交互,這種交互主要是針對(duì)審查子程序進(jìn)行的,并且2與3之間也要進(jìn)行交互,這種交互主要針對(duì)子程序在類中的總體設(shè)計(jì).
一個(gè)思想是:細(xì)化跟迭代,并且即使反饋直到類功能和子程序功能都清晰,再到5.
創(chuàng)建一個(gè)類的步驟
1)創(chuàng)建類的總體設(shè)計(jì):
設(shè)計(jì)一個(gè)類的過(guò)程中包含一些特有的設(shè)計(jì)任務(wù)--定義類的特定職責(zé),定義類所要隱藏的秘密,以及精確地定義類的接口所代表的抽象概念,決定這個(gè)類是否要從其他類派生而來(lái),以及是否允許其它類再?gòu)乃缮?指出這個(gè)類中關(guān)鍵的公用方法,標(biāo)識(shí)并設(shè)計(jì)出類所需用到的重要數(shù)據(jù)成員.
2)創(chuàng)建類中的子程序
在前述第一個(gè)步驟中標(biāo)識(shí)出類的主要子程序之后,還需要?jiǎng)?chuàng)建這些子程序.在編寫各個(gè)程序時(shí)通常還會(huì)引出更多的或重要,或次要的子程序,創(chuàng)建這些新加入的子程序的過(guò)程往往還會(huì)反過(guò)來(lái)波及類的總體設(shè)計(jì)
3)復(fù)審并測(cè)試整個(gè)類
通常情況下,子程序在創(chuàng)建的同時(shí)也經(jīng)過(guò)了測(cè)試,在整個(gè)類可以工作之后,應(yīng)該再對(duì)其整體進(jìn)行復(fù)查和測(cè)試,以便發(fā)現(xiàn)那些在子程序的獨(dú)立測(cè)試層次上無(wú)法測(cè)出的問(wèn)題.
在創(chuàng)建類的過(guò)程中,2),3)還是要求反復(fù)進(jìn)行的,直到類的總體設(shè)計(jì)是最優(yōu)的.
創(chuàng)建子程序的步驟
創(chuàng)建子程序的過(guò)程中涉及到的主要活動(dòng): 設(shè)計(jì)子程序,檢查設(shè)計(jì),編寫子程序的代碼,檢查代碼.
1 開(kāi)始
2 設(shè)計(jì)子程序(主要借助于偽代碼)
3 檢查設(shè)計(jì)(主要是檢查偽代碼)
4 編寫子程序的代碼
5 復(fù)審并測(cè)試代碼
6 完成
其中2與3是要進(jìn)行交互的,主要是保證偽代碼的質(zhì)量,4與5也是要進(jìn)行交互的,這樣主要保證子程序的質(zhì)量.
偽代碼
偽代碼的指導(dǎo)原則:
1) 用類似英語(yǔ)的語(yǔ)句來(lái)精確描述特定的操作
2) 避免使用目標(biāo)編程語(yǔ)言中的語(yǔ)法元素
3) 在本意的層面上編寫代碼,用偽代碼去描述解決問(wèn)題的方法的意圖,而不是去寫如何在目標(biāo)語(yǔ)言中實(shí)現(xiàn)這個(gè)方法.
4) 在一個(gè)足夠低的層次上編寫代碼,以便可以近乎自動(dòng)地從它生成代碼.
通過(guò)偽代碼編程過(guò)程創(chuàng)建子程序
檢查先決條件
在動(dòng)手去做子程序本身的任何工作之前,應(yīng)該先查看一下該子程序要做的工作是不是已經(jīng)定義好了,是不是能夠與整體設(shè)計(jì)相匹配.另外要結(jié)合項(xiàng)目的需求,檢查這個(gè)子程序是否真正必須的,至少是間接需要的.
定義子程序要解決的問(wèn)題
陳述出該子程序?qū)⒁鉀Q的問(wèn)題,敘述要足夠詳細(xì),以便能去創(chuàng)建這個(gè)子程序,如果高層的設(shè)計(jì)已經(jīng)足夠詳細(xì),那么這項(xiàng)工作可能已經(jīng)完成了,在這個(gè)高層的設(shè)計(jì)里至少應(yīng)該詳細(xì)說(shuō)明下列信息.
1) 這一子程序?qū)⒁[藏的信息
2) 傳給這個(gè)子程序的各項(xiàng)輸入
3) 從該子程序得到的輸出
4) 在調(diào)用程序之前確保有關(guān)的前條件成立(輸入數(shù)據(jù)的取值位于特定范圍之中,有關(guān)的流已經(jīng)初始化,文件已經(jīng)打開(kāi)或者關(guān)閉,緩沖區(qū)已經(jīng)填滿或者清空)
5) 在子程序?qū)⒖刂茩?quán)交回調(diào)用方程序之前,確保其后條件的成立(如輸出數(shù)據(jù)位于特定范圍之內(nèi),流已經(jīng)初始化,文件已經(jīng)打開(kāi)或者關(guān)閉,緩沖區(qū)已填滿或清空)
其中4和5一般通過(guò)判斷前驅(qū)和后繼條件來(lái)進(jìn)行的。前者是保證調(diào)用的條件是否成立,而后者是保證程序的返回值是否是合法的。
為子程序命名
一般地子程序已經(jīng)有一個(gè)清晰的,無(wú)二義性的名字,如果在命名這個(gè)子程序的名字的時(shí)候,有點(diǎn)困難,那么就說(shuō)明,對(duì)該子程序的設(shè)計(jì)不是很清楚,而要去改善設(shè)計(jì)了。
決定如何測(cè)試子程序
在編寫一個(gè)子程序的時(shí)候,要想一想怎么才能測(cè)試它。這在以后的C/C++測(cè)試中都可以部署單元測(cè)試工具Xunit.
在標(biāo)準(zhǔn)庫(kù)中搜尋可用的功能
想用提高代碼的質(zhì)量和生產(chǎn)率,有一個(gè)最重要的途徑就是重用好的代碼。
考慮錯(cuò)誤處理
考慮在子程序中可能出錯(cuò)的環(huán)節(jié),子程序可以用多種方式來(lái)處理錯(cuò)誤,應(yīng)該特別注意去選擇處理錯(cuò)誤的方式。
考慮效率問(wèn)題
主要是兩個(gè)方面的考慮,一是效率,而另一方面是性能。
研究算法和數(shù)據(jù)類型
如果在可用的程序庫(kù)里沒(méi)有所需的功能,它也許會(huì)在某本算法書中介紹過(guò),決定從頭開(kāi)始編寫一段復(fù)雜的代碼之前,查一下算法書看看有什么可用的內(nèi)容。如果采用一個(gè)已有明確定義的算法,則要保證這個(gè)算法正確地轉(zhuǎn)換為你所用的編程語(yǔ)言。
編寫偽代碼
前面的那些步驟主要是為確定一個(gè)思路,這在真正編寫程序的時(shí)候是很有幫助的,在完成前面的準(zhǔn)備工作以后,就可以開(kāi)始用高層次的偽代碼來(lái)寫程序。
一般是從寫子程序的注釋開(kāi)始進(jìn)行編制,主要是說(shuō)明子程序的功能和目的。
考慮數(shù)據(jù)
在整個(gè)過(guò)程中的幾個(gè)不同環(huán)節(jié)對(duì)子程序所用的數(shù)據(jù)進(jìn)行設(shè)計(jì)。
檢查偽代碼
在寫完偽代碼并設(shè)計(jì)完數(shù)據(jù)之后,花上幾分鐘時(shí)間復(fù)雜你寫的偽代碼,然后拋揩這些代碼,想想你該如何向別人解釋這些代碼。
在偽代碼中試驗(yàn)一些想法,留下最好的想法
在你開(kāi)始編寫代碼之前,應(yīng)盡可能用偽代碼去嘗試更多的想法。
編寫子程序的代碼
1 以偽代碼開(kāi)始
2 寫出子程序的聲明
3 編寫第一條和最后一條語(yǔ)句,然后將偽代碼轉(zhuǎn)換為高層次的注釋。
4 每條注釋下面填充代碼
5 檢查代碼
6 收尾工作
7 完成
其中3,4,5可以按照需求進(jìn)行重復(fù)。
寫出子程序的聲明
首先要寫出子程序的接口聲明,即C++中的函數(shù)聲明
把偽代碼轉(zhuǎn)變?yōu)楦邔哟蔚淖⑨?br>接下來(lái),把第一條和最后一條語(yǔ)句寫出來(lái),在C++中也就是"{"和"}".然后將偽代碼轉(zhuǎn)變成注釋.
在每條注釋下面填充代碼
在偽代碼注釋中的每一句話下面填寫代碼。
檢查代碼是否需要進(jìn)一步分解
方法1:把這段注釋下面的代碼重構(gòu)(refactor)成一個(gè)新的子程序。
方法2:遞歸地應(yīng)用偽代碼編程過(guò)程。
檢查代碼
1) 在腦海里檢查程序中的錯(cuò)誤。
理解每行代碼所起的作用,理解為什么需要這行代碼,沒(méi)有什么東西會(huì)僅僅因?yàn)樗瓷先タ尚芯褪钦_的。
編譯子程序
完成檢查之后,就可以編譯這個(gè)程序了。
最大地發(fā)揮編譯子程序所產(chǎn)生的指導(dǎo)建議
1)把編譯器的警告級(jí)別調(diào)到最高,通過(guò)讓編譯器來(lái)檢測(cè)錯(cuò)誤,你可以很容易地查出大量細(xì)微的錯(cuò)誤。
2)使用驗(yàn)證工具,可以通過(guò)使用類似lint這樣的工具來(lái)對(duì)C語(yǔ)言這類語(yǔ)言的編譯器所做的檢查結(jié)果進(jìn)行補(bǔ)充檢查。
3)消除產(chǎn)生錯(cuò)誤消息和警告的所有根源。
在調(diào)試器中逐步執(zhí)行代碼
程序編譯通過(guò)了之后,要在調(diào)試器中逐行執(zhí)行,以確保每行代碼都在按照你所期望的方式執(zhí)行。
測(cè)試代碼
使用你在開(kāi)發(fā)該子程序期間計(jì)劃寫的或者已寫成的測(cè)試用例來(lái)測(cè)試代碼。你可能需要開(kāi)發(fā)一些腳手架來(lái)支持你的測(cè)試用例
消除程序中的錯(cuò)誤
一旦檢測(cè)到錯(cuò)誤,就一定要把它除掉。
收尾工作
檢查子程序的接口
確定所有的輸入,輸出數(shù)據(jù)都參與了計(jì)算,并且所有的參數(shù)也都用到了。
檢查整體的設(shè)計(jì)質(zhì)量
檢查子程序中的變量
檢查子程序的語(yǔ)句和邏輯
檢查子程序的布局
檢查子程序的文檔
除去冗余的注釋。
小結(jié):
之前一直在寫程序,但是發(fā)現(xiàn)時(shí)不時(shí)思路很亂,也沒(méi)有有層次地,有系統(tǒng)地去思考這些類和子程序的設(shè)計(jì),只是去實(shí)現(xiàn)一個(gè)功能,并且能夠達(dá)到所要的目的就可以了,后來(lái)發(fā)現(xiàn)經(jīng)常出問(wèn)題,很常見(jiàn)的就是考慮不周全,在編制代碼以后,才開(kāi)始反悔,后悔當(dāng)初的設(shè)計(jì),然后對(duì)程序產(chǎn)生了消極的情緒,讓我感覺(jué)不爽,看了代碼大全,發(fā)現(xiàn)提供了可行的方法.而且思路比以前清晰多了,感覺(jué)這個(gè)方法很有效,所以記錄在這里.


 

posted on 2008-03-01 12:09 jolley 閱讀(1007) 評(píng)論(0)  編輯 收藏 引用
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            国产精品毛片高清在线完整版| 久久成人av少妇免费| 午夜亚洲福利在线老司机| 在线亚洲美日韩| 国产精品激情偷乱一区二区∴| 香蕉成人啪国产精品视频综合网| 亚洲香蕉网站| 国内视频精品| 亚洲国产精品久久久久秋霞不卡 | 亚洲国产高清一区| 欧美日韩亚洲一区三区| 亚洲免费在线播放| 久久精品国产久精国产一老狼 | 欧美视频第二页| 久久精品水蜜桃av综合天堂| 久久久水蜜桃| 亚洲午夜久久久久久久久电影院| 国产精品99久久久久久久久久久久| 国产亚洲精品成人av久久ww| 欧美激情一二三区| 国产精品v亚洲精品v日韩精品 | 亚洲无毛电影| 精品999在线播放| 一二三四社区欧美黄| 国内精品视频一区| 日韩一区二区高清| 在线观看欧美日本| 亚洲欧美日韩成人| 亚洲精品一品区二品区三品区| 亚洲在线免费视频| 亚洲精品免费网站| 久久成人精品无人区| 中文在线不卡视频| 美女国产一区| 久久视频这里只有精品| 欧美视频一区二区在线观看| 欧美国产激情| 红桃视频成人| 午夜视频在线观看一区二区三区| 一二三区精品| 免费成人av资源网| 另类天堂视频在线观看| 国产精品日日做人人爱| 亚洲精品美女在线观看| 亚洲国产日韩美| 久久久蜜桃精品| 久久激情一区| 国产精品亚洲一区| 一区二区三区精品国产| 亚洲美女电影在线| 女仆av观看一区| 欧美大片免费观看| 一色屋精品视频免费看| 欧美一级久久| 久久久水蜜桃| 国产亚洲精品久久久| 亚洲影院高清在线| 欧美一区二区三区免费大片| 欧美午夜精品一区| 国产精品99久久不卡二区| 在线一区免费观看| 亚洲一区网站| 夜夜嗨av一区二区三区网页| 亚洲国产精品欧美一二99| 久久精品国产亚洲一区二区三区| 性欧美精品高清| 国产欧美 在线欧美| 亚洲综合国产| 久久精品国产99国产精品澳门| 国产伦精品一区二区三区在线观看 | 美乳少妇欧美精品| 欧美高清视频一区二区三区在线观看| 国产一区在线播放| 久久精品国产精品亚洲综合| 久久资源在线| 亚洲精品午夜| 欧美日韩一区二区三区在线视频| 99精品视频免费观看视频| 亚洲欧美日韩国产另类专区| 国产精品色婷婷| 久久电影一区| 亚洲高清一二三区| 亚洲一区二区三区免费在线观看 | 欧美视频在线一区| 亚洲综合三区| 另类综合日韩欧美亚洲| 亚洲国产日韩欧美在线99| 欧美成人综合网站| 一区二区日韩精品| 可以看av的网站久久看| 91久久精品国产91久久| 欧美日韩视频不卡| 午夜精品久久久久久久男人的天堂 | 99riav国产精品| 国产精品久久久久久影院8一贰佰| 亚洲欧美bt| 亚洲福利视频一区二区| 亚洲综合色在线| 韩日午夜在线资源一区二区| 欧美激情一区在线观看| 亚洲免费在线播放| 亚洲国产精品一区二区第四页av| 亚洲一区激情| 亚洲福利视频二区| 国产精品色婷婷| 欧美日本成人| 久久免费视频在线观看| 一区二区三区四区五区精品视频| 久久亚洲图片| 欧美影院成人| 亚洲视频在线观看网站| 在线成人激情| 国产欧美一区二区精品秋霞影院 | 国产精品久线观看视频| 鲁大师成人一区二区三区| 亚洲午夜女主播在线直播| 亚洲国产日韩在线一区模特| 久久久91精品国产| 亚洲男人的天堂在线aⅴ视频| 亚洲福利电影| 欧美激情亚洲视频| 亚洲欧洲日韩综合二区| 国产一区二区观看| 欧美日韩在线影院| 欧美激情小视频| 久久影视精品| 校园春色综合网| 亚洲愉拍自拍另类高清精品| 亚洲精品色图| 亚洲国产成人精品女人久久久| 久久尤物电影视频在线观看| 久久av一区二区三区| 亚洲专区在线视频| 亚洲一级二级在线| 中文在线一区| 亚洲一区二区精品| 亚洲夜间福利| 亚洲永久免费| 亚洲欧美在线看| 亚洲女人天堂av| 亚洲综合欧美日韩| 亚洲欧美国产另类| 欧美亚洲日本网站| 欧美影院在线| 久久夜色精品亚洲噜噜国产mv| 久久久久久久久久看片| 久久久久中文| 欧美aa国产视频| 欧美激情一区二区在线 | 久久久欧美一区二区| 久久―日本道色综合久久| 久热国产精品| 亚洲国产人成综合网站| 亚洲精品九九| 在线亚洲欧美| 欧美一区二区三区日韩| 久久精品国产免费| 欧美成人免费网| 欧美日韩一区二区在线播放| 国产精品视频导航| 在线欧美日韩| 亚洲视频免费在线| 久久狠狠一本精品综合网| 美女精品视频一区| 亚洲欧洲综合另类| 亚洲一区二区黄| 久久综合久久久| 欧美日韩国产综合一区二区 | 久久国产精品亚洲77777| 狂野欧美激情性xxxx欧美| 欧美日韩国产不卡在线看| 国产乱码精品| 亚洲精一区二区三区| 欧美亚洲视频在线观看| 欧美大片在线看| 99视频有精品| 久久精品中文字幕一区| 欧美精品在线一区二区三区| 国产精品一区一区三区| 亚洲精品激情| 久久精品国产69国产精品亚洲| 欧美激情一区二区三区四区| 亚洲一区尤物| 欧美激情精品久久久久久变态| 国产精品综合| av不卡免费看| 蜜桃av一区二区| 亚洲免费婷婷| 欧美日韩成人免费| 在线欧美视频| 久久久午夜电影| 亚洲网站视频| 欧美日韩一区二区精品| 亚洲电影观看| 久久国产精品久久久| 亚洲乱码精品一二三四区日韩在线 | 亚洲制服av| 亚洲免费观看| 亚洲国产一区二区三区在线播| 亚洲电影在线看|