第7章 軟件實現(xiàn)-編碼_第1頁
第7章 軟件實現(xiàn)-編碼_第2頁
第7章 軟件實現(xiàn)-編碼_第3頁
第7章 軟件實現(xiàn)-編碼_第4頁
第7章 軟件實現(xiàn)-編碼_第5頁
已閱讀5頁,還剩46頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、2022-5-100承上啟下承上啟下q詳細(xì)設(shè)計方法詳細(xì)設(shè)計方法q詳細(xì)設(shè)計過程詳細(xì)設(shè)計過程2022-5-101軟件工程軟件工程 第七章實現(xiàn)-軟件編碼2022-5-102 軟件的詳細(xì)設(shè)計完成,就表示完成了軟件的過程性的描軟件的詳細(xì)設(shè)計完成,就表示完成了軟件的過程性的描述,進(jìn)入軟件編碼階段。述,進(jìn)入軟件編碼階段。 在軟件生命期中,程序經(jīng)常需要被人閱讀和理解,如何提在軟件生命期中,程序經(jīng)常需要被人閱讀和理解,如何提高程序的可讀性高程序的可讀性(Readability)?使程序?使程序“簡單簡單”和和“清晰清晰”,進(jìn)而使程序具有良好的可靠性、可維護(hù)性,這是非常重要的。進(jìn)而使程序具有良好的可靠性、可維護(hù)性

2、,這是非常重要的。編碼(編碼(CodingCoding)階段的任務(wù)簡單說,是為每個模塊編寫)階段的任務(wù)簡單說,是為每個模塊編寫程序。即是將詳細(xì)設(shè)計的結(jié)果轉(zhuǎn)換為用某種計算機(jī)語言寫的程序。即是將詳細(xì)設(shè)計的結(jié)果轉(zhuǎn)換為用某種計算機(jī)語言寫的程序程序源程序代碼。源程序代碼。引言引言2022-5-103 本單元不是介紹如何編寫程序,而是從如何本單元不是介紹如何編寫程序,而是從如何提高軟件的質(zhì)量和可維護(hù)性的角度,討論在編提高軟件的質(zhì)量和可維護(hù)性的角度,討論在編碼階段所要解決的主要問題:碼階段所要解決的主要問題: 程序設(shè)計語言的特性及選擇的原則程序設(shè)計語言的特性及選擇的原則 編碼風(fēng)格編碼風(fēng)格 引言引言2022-

3、5-104引言引言n 編程的工作包括哪些?編程的工作包括哪些?n “學(xué)什么編程語言最好?學(xué)什么編程語言最好?” 沒有最好的,只有最適合的?沒有最好的,只有最適合的?n 團(tuán)隊項目你們選用了哪種編程語言?團(tuán)隊項目你們選用了哪種編程語言?n 你是怎么寫程序的?你是怎么寫程序的?n 如何協(xié)作編程?如何協(xié)作編程?2022-5-105本章要點本章要點q一、關(guān)于編碼的一些理念關(guān)于編碼的一些理念q二、編程語言的選擇二、編程語言的選擇q三、三、編碼標(biāo)準(zhǔn)和規(guī)范編碼標(biāo)準(zhǔn)和規(guī)范q四、案例分析四、案例分析2022-5-106什么是軟件編碼?什么是軟件編碼?Programming ?Programming ? Codin

4、gCodingn 一種觀點一種觀點軟件編碼是將軟件設(shè)計模型機(jī)械地轉(zhuǎn)換成源程序代軟件編碼是將軟件設(shè)計模型機(jī)械地轉(zhuǎn)換成源程序代碼,這是一種低水平的、缺乏創(chuàng)造性的工作。碼,這是一種低水平的、缺乏創(chuàng)造性的工作。軟件程序員是所謂的軟件程序員是所謂的“軟件藍(lán)領(lǐng)軟件藍(lán)領(lǐng)”。n 問題問題: :你是否認(rèn)同這種觀點?你是否認(rèn)同這種觀點?如果如果不認(rèn)同,你如何看待軟件編碼?不認(rèn)同,你如何看待軟件編碼?關(guān)于編碼的一些理念關(guān)于編碼的一些理念2022-5-107n 什么是軟件編碼?什么是軟件編碼?n Professional Programmer Professional Programmer Software Engi

5、neerSoftware Engineern 正確觀點正確觀點 軟件編碼是一個復(fù)雜而迭代的過程,包括軟件編碼是一個復(fù)雜而迭代的過程,包括 程序設(shè)計和程序?qū)崿F(xiàn)。程序設(shè)計和程序?qū)崿F(xiàn)。 軟件編碼要求軟件編碼要求 正確地理解用戶需求和軟件設(shè)計思想正確地理解用戶需求和軟件設(shè)計思想 正確地根據(jù)設(shè)計模型進(jìn)行程序設(shè)計正確地根據(jù)設(shè)計模型進(jìn)行程序設(shè)計 正確地而高效率地編寫和測試源代碼正確地而高效率地編寫和測試源代碼軟件編碼是設(shè)計的繼續(xù),會影響軟件質(zhì)量軟件編碼是設(shè)計的繼續(xù),會影響軟件質(zhì)量 和可維護(hù)性。和可維護(hù)性。軟件編碼要考慮重用和重構(gòu)軟件編碼要考慮重用和重構(gòu) 關(guān)于編碼的一些理念關(guān)于編碼的一些理念2022-5-10

6、8軟件編碼的工作軟件編碼的工作n 程序設(shè)計程序設(shè)計 理解軟件的需求說明和設(shè)計模型理解軟件的需求說明和設(shè)計模型 補(bǔ)充遺漏的或剩余的詳細(xì)設(shè)計補(bǔ)充遺漏的或剩余的詳細(xì)設(shè)計 設(shè)計程序代碼的結(jié)構(gòu)設(shè)計程序代碼的結(jié)構(gòu)n 設(shè)計審查設(shè)計審查 檢查設(shè)計結(jié)果檢查設(shè)計結(jié)果 記錄發(fā)現(xiàn)的設(shè)計缺陷(類型、來源、嚴(yán)重性)記錄發(fā)現(xiàn)的設(shè)計缺陷(類型、來源、嚴(yán)重性)n 編寫代碼編寫代碼 應(yīng)用編碼規(guī)范進(jìn)行代碼編寫應(yīng)用編碼規(guī)范進(jìn)行代碼編寫 所編寫代碼應(yīng)該是易驗證的所編寫代碼應(yīng)該是易驗證的關(guān)于編碼的一些理念關(guān)于編碼的一些理念2022-5-109n 軟件編碼的工作軟件編碼的工作n 代碼走查代碼走查確認(rèn)所寫代碼完成了所要求的工作確認(rèn)所寫代碼完

7、成了所要求的工作發(fā)現(xiàn)的代碼缺陷(類型、來源、嚴(yán)重性)發(fā)現(xiàn)的代碼缺陷(類型、來源、嚴(yán)重性)n 編譯代碼編譯代碼修改代碼的語法錯誤修改代碼的語法錯誤n 測試所寫代碼測試所寫代碼對代碼進(jìn)行單元測試對代碼進(jìn)行單元測試調(diào)試代碼修改錯誤調(diào)試代碼修改錯誤關(guān)于編碼的一些理念關(guān)于編碼的一些理念2022-5-1010n 程序員應(yīng)具備的能力?程序員應(yīng)具備的能力?n 基礎(chǔ)知識 英語的功底 數(shù)學(xué)基礎(chǔ)(算法分析與設(shè)計) 計算機(jī)科學(xué)基礎(chǔ)知識n 基本技能 認(rèn)識事務(wù)的能力(抽象、模型、結(jié)構(gòu)、層次) 做事的邏輯性和條理性 溝通技能、演講技巧和團(tuán)隊協(xié)作能力 學(xué)習(xí)新知識和新技術(shù)的能力n 職業(yè)化訓(xùn)練和實踐經(jīng)驗關(guān)于編碼的一些理念關(guān)于編碼

8、的一些理念2022-5-1011本章要點本章要點q一、關(guān)于編碼的一些理念關(guān)于編碼的一些理念q二、編程語言的選擇二、編程語言的選擇q三、三、編碼標(biāo)準(zhǔn)和規(guī)范編碼標(biāo)準(zhǔn)和規(guī)范q四、案例分析四、案例分析2022-5-1012問題問題n 在哪個階段選擇編程語言?在哪個階段選擇編程語言?n 是需求階段確定還是在設(shè)計階段確定,主要看是需求階段確定還是在設(shè)計階段確定,主要看客戶有無具體編程環(huán)境要求。客戶有無具體編程環(huán)境要求。n 如果客戶提出:在如果客戶提出:在Linux和和Windows系統(tǒng)上都系統(tǒng)上都能運(yùn)行,則不能能運(yùn)行,則不能VC+,VB.net等語言。若采用等語言。若采用Linux做服務(wù)器,那就不能采用做

9、服務(wù)器,那就不能采用ASP語言作為語言作為后臺程序的開發(fā)語言??蛇x后臺程序的開發(fā)語言??蛇xJava和和PHP.n 我們要對程序語言本身的特點進(jìn)行了解我們要對程序語言本身的特點進(jìn)行了解2022-5-1013程序語言的分類程序語言的分類n 從計算機(jī)發(fā)展角度:分為代從計算機(jī)發(fā)展角度:分為代n 代:機(jī)器語言代:機(jī)器語言n 代:匯編語言代:匯編語言n 代:高級程序設(shè)計語言代:高級程序設(shè)計語言n 代:例如;代:例如;編程語言的選擇編程語言的選擇2022-5-1014程序語言的分類程序語言的分類n 從應(yīng)用角度:從應(yīng)用角度:n腳本語言腳本語言n匯編語言匯編語言n面向過程的高級語言面向過程的高級語言n面向?qū)ο蟮?/p>

10、高級語言。面向?qū)ο蟮母呒壵Z言。編程語言的選擇編程語言的選擇2022-5-1015一、腳本語言:一、腳本語言:n 以簡單的方式快速完成復(fù)雜任務(wù)。語法結(jié)構(gòu)簡單,使用以簡單的方式快速完成復(fù)雜任務(wù)。語法結(jié)構(gòu)簡單,使用方便。不需要編譯。運(yùn)行效率略顯不足。方便。不需要編譯。運(yùn)行效率略顯不足。n 代表:代表:n JavaScript: 由由Netscape開發(fā),在客戶機(jī)上執(zhí)行,專門開發(fā),在客戶機(jī)上執(zhí)行,專門為制作為制作Web網(wǎng)頁而量身定做。網(wǎng)頁而量身定做。n PHP: 是一種是一種HTML內(nèi)嵌式語言。是在服務(wù)器端執(zhí)行的內(nèi)嵌式語言。是在服務(wù)器端執(zhí)行的嵌入嵌入HTML文檔的腳本語言。其風(fēng)格類似于語言。被文檔的腳

11、本語言。其風(fēng)格類似于語言。被許多網(wǎng)站編程人員采用。許多網(wǎng)站編程人員采用。n Perl:用來完成大量不同任務(wù)的腳本語言。例如,打?。河脕硗瓿纱罅坎煌蝿?wù)的腳本語言。例如,打印報告,將一個文本文件轉(zhuǎn)換成另一種格式。能在絕大多報告,將一個文本文件轉(zhuǎn)換成另一種格式。能在絕大多數(shù)操作系統(tǒng)環(huán)境下運(yùn)行。數(shù)操作系統(tǒng)環(huán)境下運(yùn)行。編程語言的選擇編程語言的選擇2022-5-1016二、面向過程的高級語言二、面向過程的高級語言n 特點:具有很強(qiáng)的過程功能和數(shù)據(jù)結(jié)構(gòu)功能,特點:具有很強(qiáng)的過程功能和數(shù)據(jù)結(jié)構(gòu)功能,并提供結(jié)構(gòu)化的邏輯構(gòu)造。并提供結(jié)構(gòu)化的邏輯構(gòu)造。n 代表:代表: PASCAL、PL/1、C編程語言的選擇編程

12、語言的選擇2022-5-1017三、面向?qū)ο蟮母呒壵Z言三、面向?qū)ο蟮母呒壵Z言編程語言的選擇編程語言的選擇SmalltalkSmalltalk 首先實現(xiàn)真正的面向?qū)ο蟮某绦蛟O(shè)計,支持程序部件的首先實現(xiàn)真正的面向?qū)ο蟮某绦蛟O(shè)計,支持程序部件的“可復(fù)用性可復(fù)用性”。C+C+ 既融合了面向?qū)ο蟮哪芰?,又與既融合了面向?qū)ο蟮哪芰?,又與C C語言兼容,保留了語言兼容,保留了C C的許多重的許多重要特性。維護(hù)了大量已開發(fā)的要特性。維護(hù)了大量已開發(fā)的C C庫、工具及庫、工具及C C源程序的完整性。源程序的完整性。代表:代表:Turbo C+Turbo C+; Borland C+ Borland C+ ; M

13、icrosoft C+Microsoft C+Java Java 是一種簡單的面向?qū)ο蟮姆植际降恼Z言。功能強(qiáng)大、高效安全,是一種簡單的面向?qū)ο蟮姆植际降恼Z言。功能強(qiáng)大、高效安全,與結(jié)構(gòu)無關(guān),易于移植,是多線程的動態(tài)語言。增加了與結(jié)構(gòu)無關(guān),易于移植,是多線程的動態(tài)語言。增加了Objective CObjective C的擴(kuò)充,提供更多的動態(tài)解決辦法。的擴(kuò)充,提供更多的動態(tài)解決辦法。2022-5-1018如何選擇程序設(shè)計語言?如何選擇程序設(shè)計語言? 關(guān)系到程序的效率和質(zhì)量。關(guān)系到程序的效率和質(zhì)量。 應(yīng)根據(jù)軟件系統(tǒng)的應(yīng)用特點,語言的內(nèi)在特點等選擇程序設(shè)應(yīng)根據(jù)軟件系統(tǒng)的應(yīng)用特點,語言的內(nèi)在特點等選擇程

14、序設(shè)計語言。計語言。(1)(1)項目的應(yīng)用領(lǐng)域項目的應(yīng)用領(lǐng)域: :應(yīng)盡量選取適合某個應(yīng)用領(lǐng)域的語言。應(yīng)盡量選取適合某個應(yīng)用領(lǐng)域的語言。(2)(2)算法和計算復(fù)雜性:算法和計算復(fù)雜性:要根據(jù)不同語言的特點,選取能夠要根據(jù)不同語言的特點,選取能夠適應(yīng)軟件項目算法和計算復(fù)雜性的語言。適應(yīng)軟件項目算法和計算復(fù)雜性的語言。(3)(3)軟件的執(zhí)行環(huán)境:軟件的執(zhí)行環(huán)境:要選取機(jī)器上能運(yùn)行且具有相應(yīng)支持要選取機(jī)器上能運(yùn)行且具有相應(yīng)支持軟件的語言。軟件的語言。編程語言的選擇編程語言的選擇一、語言選擇的一般準(zhǔn)則一、語言選擇的一般準(zhǔn)則2022-5-1019(4)(4)性能因素:性能因素:應(yīng)結(jié)合工程具體性能來考慮應(yīng)結(jié)

15、合工程具體性能來考慮, ,例如實時系例如實時系統(tǒng)要求速度,就應(yīng)選擇匯編語言。統(tǒng)要求速度,就應(yīng)選擇匯編語言。(5)(5)數(shù)據(jù)結(jié)構(gòu)的復(fù)雜性:數(shù)據(jù)結(jié)構(gòu)的復(fù)雜性:要根據(jù)不同語言構(gòu)造數(shù)據(jù)結(jié)構(gòu)類要根據(jù)不同語言構(gòu)造數(shù)據(jù)結(jié)構(gòu)類型的能力選取合適的語言。型的能力選取合適的語言。(6)(6)軟件開發(fā)人員的知識水平以及心理因素。軟件開發(fā)人員的知識水平以及心理因素。 知識水平包括知識水平包括: : 專業(yè)知識,程序設(shè)計能力。專業(yè)知識,程序設(shè)計能力。 心理因素:如對某種語言或工具的熟悉程度。受外界的影心理因素:如對某種語言或工具的熟悉程度。受外界的影響(盲目追求高、新)。響(盲目追求高、新)。編程語言的選擇編程語言的選擇2

16、022-5-1020本章要點本章要點q一、關(guān)于編碼的一些理念關(guān)于編碼的一些理念q二、編程語言的選擇二、編程語言的選擇q三、三、編碼標(biāo)準(zhǔn)和規(guī)范編碼標(biāo)準(zhǔn)和規(guī)范q四、案例分析四、案例分析2022-5-1021在軟件生命期中,程序經(jīng)常需要被人閱讀和在軟件生命期中,程序經(jīng)常需要被人閱讀和理解,如何提高程序的可讀性理解,如何提高程序的可讀性(Readability)?使程序)?使程序“簡單簡單”和和“清清晰晰”,進(jìn)而使程序具有良好的可靠性、可維護(hù),進(jìn)而使程序具有良好的可靠性、可維護(hù)性,這是非常重要的。性,這是非常重要的。編碼標(biāo)準(zhǔn)和規(guī)范編碼標(biāo)準(zhǔn)和規(guī)范2022-5-1022編碼標(biāo)準(zhǔn)和規(guī)范編碼標(biāo)準(zhǔn)和規(guī)范p標(biāo)準(zhǔn)是

17、建立起來和必須遵守的規(guī)則p規(guī)范是建議最佳做法,推薦更好方式。p例如p注釋注釋p變量變量p格式格式p文件文件p目錄目錄p約定約定p2022-5-1023編碼標(biāo)準(zhǔn)和規(guī)范編碼標(biāo)準(zhǔn)和規(guī)范n 作為一個開發(fā)團(tuán)隊,沒有一套規(guī)范,大家就會各自為政,為了提高代碼質(zhì)量,不僅需要有很好的程序設(shè)計風(fēng)格,而且需要大家遵守一致的編程規(guī)范。2022-5-1024編碼的風(fēng)格編碼的風(fēng)格q 程序?qū)嶋H上也是一種供人閱讀的文章,有一個文章的風(fēng)格問題。應(yīng)該使程序具有良好的風(fēng)格。q 從20世紀(jì)70年代以來,編碼的目標(biāo)從強(qiáng)調(diào)效率轉(zhuǎn)變?yōu)閺?qiáng)調(diào)清晰。與此相應(yīng),編碼的風(fēng)格從追求“聰明”和“技巧”,變?yōu)樘岢昂喢鳌焙汀爸苯印薄H藗冎饾u認(rèn)識到,良好的

18、編碼風(fēng)格能在一定程度上彌補(bǔ)語言存在的缺點,反之,不注意風(fēng)格,即使使用了結(jié)構(gòu)化的現(xiàn)代語言,也很難寫出高質(zhì)量的程序。當(dāng)多個程序員合作編寫一個大的程序時,尤其需要強(qiáng)調(diào)良好的和一致的風(fēng)格,以利于相互通信,減少因不協(xié)調(diào)而引起的問題。編碼標(biāo)準(zhǔn)和規(guī)范編碼標(biāo)準(zhǔn)和規(guī)范2022-5-1025語句結(jié)構(gòu)語句結(jié)構(gòu)編碼標(biāo)準(zhǔn)和規(guī)范編碼標(biāo)準(zhǔn)和規(guī)范編碼的風(fēng)格編碼的風(fēng)格2022-5-1026、使用標(biāo)準(zhǔn)的控制結(jié)構(gòu)、使用標(biāo)準(zhǔn)的控制結(jié)構(gòu)q 結(jié)構(gòu)化程序設(shè)計主要包括兩方面:q 在編寫程序時,使用幾種基本控制結(jié)構(gòu),通過組合嵌套,形成程序的控制結(jié)構(gòu)。盡可能避免使用GOTO語句。q 在程序設(shè)計過程中,盡量采用自頂向下和逐步細(xì)化的原則,由粗到細(xì),

19、一步步展開。編碼標(biāo)準(zhǔn)和規(guī)范編碼標(biāo)準(zhǔn)和規(guī)范編碼的風(fēng)格編碼的風(fēng)格2022-5-1027編碼標(biāo)準(zhǔn)和規(guī)范編碼標(biāo)準(zhǔn)和規(guī)范、使用標(biāo)準(zhǔn)的控制結(jié)構(gòu)、使用標(biāo)準(zhǔn)的控制結(jié)構(gòu)禁止使用禁止使用GOTO(C 語言)語句。語言)語句。用用IF 語句來強(qiáng)調(diào)只執(zhí)行兩組語句中的一組,禁止語句來強(qiáng)調(diào)只執(zhí)行兩組語句中的一組,禁止ELSE GOTO和和ELSE RETURN。避免從循環(huán)中引出多個出口,應(yīng)保留函數(shù)(方法)只有一避免從循環(huán)中引出多個出口,應(yīng)保留函數(shù)(方法)只有一個出口。個出口。問題:以下示例有什么問題?如何修改?問題:以下示例有什么問題?如何修改?p = (char *)malloc(300);if (cond1 0)st

20、rcpy(p, str);else return;free(p);編碼的風(fēng)格編碼的風(fēng)格2022-5-1028、源程序文檔化、源程序文檔化q標(biāo)識符的命名q 安排注釋q 程序的視覺組織編碼的風(fēng)格編碼的風(fēng)格編碼標(biāo)準(zhǔn)和規(guī)范編碼標(biāo)準(zhǔn)和規(guī)范2022-5-1029、源程序文檔化、源程序文檔化標(biāo)識符的命名標(biāo)識符的命名q符號名即標(biāo)識符,包括模塊名、變量名、常量名、數(shù)據(jù)區(qū)名以及緩沖區(qū)名等。q這些名字應(yīng)能反映它所代表的實際東西,應(yīng)有一定實際意義。q例如,表示次數(shù)的量用Times,表示總量的用Total,表示平均值的用Average,表示和的量用Sum等。編碼的風(fēng)格編碼的風(fēng)格編碼標(biāo)準(zhǔn)和規(guī)范編碼標(biāo)準(zhǔn)和規(guī)范2022-5-

21、1030、源程序文檔化、源程序文檔化標(biāo)識符的命名標(biāo)識符的命名q名字不是越長越好,應(yīng)當(dāng)選擇精煉的意義明確的名字。必要時可使用縮寫名字,但這時要注意縮寫規(guī)則要一致,并且要給每一個名字加注釋。同時,在一個程序中,一個變量只應(yīng)用于一種用途。q 例如,在一個程序中定義了一個變量temp,它在程序的前半段代表“Temperature”,在程序的后半段則代表“Temporary”,這使程序閱讀者不知所措。編碼標(biāo)準(zhǔn)和規(guī)范編碼標(biāo)準(zhǔn)和規(guī)范編碼的風(fēng)格編碼的風(fēng)格2022-5-1031、源程序文檔化、源程序文檔化標(biāo)識符的命名標(biāo)識符的命名通用規(guī)則:n 標(biāo)識符的命名應(yīng)當(dāng)直觀,可以望文知義。n 長度符合最小長度下的最大信息。

22、n 變量名應(yīng)當(dāng)使用“名詞”或“形容詞+名詞”n 函數(shù)名應(yīng)當(dāng)使用“動詞”或者“動詞+名詞”的形式n 類和接口名首字母要大寫n 常量名全大寫,在單詞間用單下劃線分隔n 變量名和參數(shù)名第一個單詞首字母小寫,而后面的單詞首字母大寫n 。編碼的風(fēng)格編碼的風(fēng)格編碼標(biāo)準(zhǔn)和規(guī)范編碼標(biāo)準(zhǔn)和規(guī)范2022-5-1032、源程序文檔化、源程序文檔化標(biāo)識符的命名標(biāo)識符的命名命名規(guī)則規(guī)范舉例命名規(guī)則規(guī)范舉例(1)類名和接口名)類名和接口名 class CourseOffering ; interface Storing; (2) 常量名常量名 public static final int MAX_VALUE = 10

23、;(3)全局變量)全局變量 int g_numStudents;編碼標(biāo)準(zhǔn)和規(guī)范編碼標(biāo)準(zhǔn)和規(guī)范編碼的風(fēng)格編碼的風(fēng)格2022-5-1033、源程序文檔化、源程序文檔化標(biāo)識符的命名標(biāo)識符的命名命名規(guī)則規(guī)范舉例命名規(guī)則規(guī)范舉例(4) 局部變量名局部變量名 float myWidth; 一般禁止使用單字符變量名,局部循環(huán)可以使用。一般禁止使用單字符變量名,局部循環(huán)可以使用。 比如:比如:int i, j , k ;編碼的風(fēng)格編碼的風(fēng)格編碼標(biāo)準(zhǔn)和規(guī)范編碼標(biāo)準(zhǔn)和規(guī)范2022-5-1034、源程序文檔化、源程序文檔化程序的注釋程序的注釋q夾在程序中的注釋是程序員與日后的程序讀者之間通信的重要手段。q注釋決不是

24、可有可無的。q一些正規(guī)的程序文本中,注釋行的數(shù)量占到整個源程序的13到12,甚至更多。q注釋分為序言性注釋和功能性注釋。編碼的風(fēng)格編碼的風(fēng)格編碼標(biāo)準(zhǔn)和規(guī)范編碼標(biāo)準(zhǔn)和規(guī)范2022-5-1035、源程序文檔化、源程序文檔化程序的注釋程序的注釋序言性注釋序言性注釋q通常置于每個程序模塊的開頭部分,它應(yīng)當(dāng)給出程序的整體說明,對于理解程序本身具有引導(dǎo)作用。有些軟件開發(fā)部門對序言性注釋做了明確而嚴(yán)格的規(guī)定,要求程序編制者逐項列出。編碼標(biāo)準(zhǔn)和規(guī)范編碼標(biāo)準(zhǔn)和規(guī)范編碼的風(fēng)格編碼的風(fēng)格2022-5-1036程序頭的注釋模板程序頭的注釋模板 /* * Copyright 2003-2008 xxx公司技術(shù)開發(fā)部公司

25、技術(shù)開發(fā)部 * 創(chuàng)建人:創(chuàng)建人:xx * 日期:日期:xxxxxxxx * 修改人:修改人:xx * 日期:日期:xxxxxxxx * 描述:描述: * * 版本:版本: */序言性注釋舉例序言性注釋舉例編碼標(biāo)準(zhǔn)和規(guī)范編碼標(biāo)準(zhǔn)和規(guī)范2022-5-1037n 下面是一個描述程序開頭的功能及其他程序接口的例子下面是一個描述程序開頭的功能及其他程序接口的例子/* 模塊功能:尋找兩條直線的交點。模塊功能:尋找兩條直線的交點。 * 模塊名稱:模塊名稱:FindDPT * 代碼編寫者:張青代碼編寫者:張青 * 版本:版本:1.1 * 日期:日期:2006.10.12 * * 過程調(diào)用:過程調(diào)用:Call

26、FindDPT( A1,B1,C1,A2,B2,C2,XS,YS,Flag) * 輸入?yún)?shù):輸入?yún)?shù):A1,B1,C1,A2,B2,C2 * (直線一:(直線一:A1*X+B1*Y+C1=0 * 直線二:直線二:A2*X+B2*Y+C2=0) * * 輸出參數(shù):如果兩條直線平行,輸出參數(shù):如果兩條直線平行,F(xiàn)lag=1,否則否則Flag=0并且并且* 兩條直線的交點是(,)兩條直線的交點是(,) 編碼標(biāo)準(zhǔn)和規(guī)范編碼標(biāo)準(zhǔn)和規(guī)范2022-5-1038、源程序文檔化、源程序文檔化程序的注釋程序的注釋功能性注釋功能性注釋q 功能性注釋嵌在源程序體中,用以描述其后的語句或程序段是在做什么工作,或是執(zhí)行了

27、下面的語句會怎么樣。而不要解釋下面怎么做。q 例如, /* ADD AMOUNT TO TOTAL */ TOTAL = AMOUNTTOTAL 不好編碼標(biāo)準(zhǔn)和規(guī)范編碼標(biāo)準(zhǔn)和規(guī)范編碼的風(fēng)格編碼的風(fēng)格2022-5-1039、源程序文檔化、源程序文檔化程序的注釋程序的注釋功能性注釋功能性注釋q 如果注明把月銷售額計入年度總額,便使讀者理解了下面語句的意圖: /* ADD MONTHLY-SALES TO ANNUAL-TOTAL */TOTAL = AMOUNTTOTALq 要點q 描述一段程序,而不是每一個語句;q 用縮進(jìn)和空行,使程序與注釋容易區(qū)別;q 注釋要正確。編碼標(biāo)準(zhǔn)和規(guī)范編碼標(biāo)準(zhǔn)和規(guī)范

28、編碼的風(fēng)格編碼的風(fēng)格2022-5-1040、源程序文檔化、源程序文檔化程序的視覺組織q 恰當(dāng)?shù)乩每崭?,可以突出運(yùn)算的優(yōu)先性,避免發(fā)生運(yùn)算的錯誤。q 例如 ,將表達(dá)式(A17)ANDNOT(B49)ORC寫成(A17) AND NOT (B49) OR Cq 自然的程序段之間可用空行隔開q 可參見相關(guān)語言編碼規(guī)范編碼標(biāo)準(zhǔn)和規(guī)范編碼標(biāo)準(zhǔn)和規(guī)范編碼的風(fēng)格編碼的風(fēng)格2022-5-1041本章要點本章要點q一、關(guān)于編碼的一些理念關(guān)于編碼的一些理念q二、編程語言的選擇二、編程語言的選擇q三、三、編碼標(biāo)準(zhǔn)和規(guī)范編碼標(biāo)準(zhǔn)和規(guī)范q四、案例分析四、案例分析2022-5-1042案例分析案例分析例例1:程序注釋:

29、程序注釋程序注釋的原則注釋應(yīng)當(dāng)淺顯、明白注釋應(yīng)當(dāng)淺顯、明白注釋不是程序員指南注釋不是程序員指南注釋不是標(biāo)準(zhǔn)庫函數(shù)參考手冊注釋不是標(biāo)準(zhǔn)庫函數(shù)參考手冊注釋的主要任務(wù)是答疑解惑而不是增加程序的行數(shù)注釋的主要任務(wù)是答疑解惑而不是增加程序的行數(shù)好的注釋是對設(shè)計思想的精確表述和清晰展現(xiàn)好的注釋是對設(shè)計思想的精確表述和清晰展現(xiàn)問題:例例1 的程序注釋存在什么問題?的程序注釋存在什么問題?按照上述原則,如何修改例按照上述原則,如何修改例1 的程序注釋?的程序注釋?2022-5-1043案例分析案例分析例2 所示的程序風(fēng)格如何?你能夠容易理解嗎?編程人員的理由使用z 打頭的變量名、函數(shù)名、宏定義名就像是為自己的

30、旅行箱貼標(biāo)簽將void, int, float等基本數(shù)據(jù)類型重新命名,可以在最大程度上保證代碼的可移植性使用宏定義表示一些基本的功能運(yùn)算可以大幅度減少源程序的行數(shù),也可以被后者方便地復(fù)用使用高度簡練的縮寫可以加強(qiáng)源代碼的保密程度你是否認(rèn)同上述理由?為什么?2022-5-1044案例分析案例分析例3 所示的程序運(yùn)行時會崩潰,其中有四處足以讓程序崩潰的錯誤,找出錯誤并改加以正。總結(jié)非法內(nèi)存訪問的基本特征是代碼訪問了不該訪問的內(nèi)存地址某些“自由的”語言更容易引發(fā)內(nèi)存錯誤(如C/C+)要避免產(chǎn)品中出現(xiàn)內(nèi)存錯誤,好的編碼規(guī)范、所選的語言和工具、有效的測試等工作都是有意義的2022-5-1045案例分析案例分析內(nèi)存的

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論