《現(xiàn)代軟件工程應(yīng)用技術(shù)》-第七章_第1頁
《現(xiàn)代軟件工程應(yīng)用技術(shù)》-第七章_第2頁
《現(xiàn)代軟件工程應(yīng)用技術(shù)》-第七章_第3頁
《現(xiàn)代軟件工程應(yīng)用技術(shù)》-第七章_第4頁
《現(xiàn)代軟件工程應(yīng)用技術(shù)》-第七章_第5頁
已閱讀5頁,還剩26頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

【本章概要】·程序編碼的風(fēng)格·編碼語言的選擇·源程序文檔化案例:企業(yè)設(shè)備狀況管理系統(tǒng)的實(shí)現(xiàn)任務(wù)7.1程序編碼的風(fēng)格7.1.1語句構(gòu)造的原則

(1)在源程序中,盡量不要把多條語句寫在同一行,并采用適當(dāng)?shù)目s進(jìn)格式,這樣會(huì)使程序讀起來邏輯變得清晰。(2)編寫程序時(shí)首先應(yīng)當(dāng)考慮清晰性,不要刻意追求技巧性,而使程序?qū)懙倪^于緊湊。(3)盡量只采用三種基本的控制結(jié)構(gòu)來編寫程序,如IF-ELSE,F(xiàn)OR,DO-WHILE或DO-UNTIL等語句,每個(gè)循環(huán)都要有終止條件,不要出現(xiàn)死循環(huán)。(4)對(duì)于多分支語句,可以盡量把出現(xiàn)可能性較大的情況放在前面,這樣可以節(jié)省運(yùn)算時(shí)間。任務(wù)7.1程序編碼的風(fēng)格表7-1學(xué)生成績(jī)統(tǒng)計(jì)表分?jǐn)?shù)段等級(jí)比例0-60不及12%60-70 及25%70-80 中40%80-90良18%90-100優(yōu)5%任務(wù)7.1程序編碼的風(fēng)格那么,寫語句的時(shí)候就應(yīng)該這樣:switch(a/10){case7:printf("中\(zhòng)n");break;case6:printf("及\n");break;case8:printf("良\n");break;case9:printf("優(yōu)\n");break;default:printf("不及格!\n\n");}這樣,把大概率事件放在前面運(yùn)行,就可以提高運(yùn)行效率。任務(wù)7.1程序編碼的風(fēng)格(5)因?yàn)镚OTO語句很容易產(chǎn)生不清晰、不易讀的代碼,所以要避免不必要的流程轉(zhuǎn)移或?yàn)E用GOTO語句。(6)盡量減少使用“否定”條件的條件語句。一般都把否定寫在else語句中,例:

if(strcmp(sta[i].name,xm)==0){……}else{……}任務(wù)7.1程序編碼的風(fēng)格(7)在程序開發(fā)過程中,盡可能使用庫函數(shù)、包等。這樣可以使程序結(jié)構(gòu)完整、運(yùn)行高效。例:for(j=0;j<256;j++){v1[j]=0;v2[j]=0;}for(k=0;k<128;k++){v3[k]=0;}……其中,三個(gè)變量v1,v2,v3都可以使用W32的API函數(shù)的ZeroMemory函數(shù)來實(shí)現(xiàn)。ZeroMemory(v1,256);ZeroMemory(v2,256);ZeroMemory(v3,128);這樣,由于ZeroMemory函數(shù)的效率非常高,就大大提高了程序的運(yùn)行效率。任務(wù)7.1程序編碼的風(fēng)格7.1.2輸入/輸出技術(shù)

(1)用戶對(duì)系統(tǒng)不熟悉,很容易輸入格式不正確,所以為了避免用戶誤輸入,對(duì)輸人數(shù)據(jù)要進(jìn)行校驗(yàn),使每個(gè)數(shù)據(jù)都是有效的。

圖7-1輸入日期任務(wù)7.1程序編碼的風(fēng)格(2)有時(shí)候,需要輸入多項(xiàng)信息,檢查輸入項(xiàng)的組合的正確性,必要時(shí)報(bào)告輸入錯(cuò)誤信息。見圖7-2所示。圖7-2錯(cuò)誤提示任務(wù)7.1程序編碼的風(fēng)格(3)在交互式輸入時(shí),使得輸入的步驟和操作盡可能簡(jiǎn)單,并保持簡(jiǎn)單的輸人格式,要在屏幕上使用提示符明確提示交互輸入的請(qǐng)求,指明可使用選擇項(xiàng)的種類和取值范圍。如圖7-3所示。圖7-3可以選擇輸入任務(wù)7.1程序編碼的風(fēng)格(3)在交互式輸入時(shí),使得輸入的步驟和操作盡可能簡(jiǎn)單,并保持簡(jiǎn)單的輸人格式,要在屏幕上使用提示符明確提示交互輸入的請(qǐng)求,指明可使用選擇項(xiàng)的種類和取值范圍。如圖7-3所示。圖7-3可以選擇輸入任務(wù)7.1程序編碼的風(fēng)格(4)輸入數(shù)據(jù)時(shí),應(yīng)允許使用自由格式輸入,應(yīng)允許默認(rèn)值。見圖7-4所示。圖7-4默認(rèn)性別任務(wù)7.1程序編碼的風(fēng)格(5)輸入一批數(shù)據(jù)時(shí),最好使用輸入結(jié)束標(biāo)志,而不要由用戶指定輸入數(shù)據(jù)數(shù)目。當(dāng)輸入的數(shù)據(jù)超出輸入范圍時(shí),自動(dòng)換行,如圖7-5所示。圖7-5自動(dòng)換行任務(wù)7.1程序編碼的風(fēng)格(6)給所有輸出加注解,并設(shè)計(jì)輸出報(bào)表格式。如圖7-6所示。圖7-6報(bào)表任務(wù)7.1程序編碼的風(fēng)格(7)輸入/輸出反映速度有時(shí)還受到許多其他因素的影響,如輸入/輸出設(shè)備、用戶的熟練程度和通信環(huán)境等。這時(shí),需要有緩沖動(dòng)畫,有文字提示,見圖7-7所示。

圖7-7提示任務(wù)7.1程序編碼的風(fēng)格7.1.3程序設(shè)計(jì)的效率(1)程序的效率與程序的簡(jiǎn)單性相關(guān),好的設(shè)計(jì)可以提高效率,應(yīng)該加強(qiáng)對(duì)設(shè)計(jì)階段人員的要求。(2)在寫程序前,盡量簡(jiǎn)化有關(guān)數(shù)學(xué)、算法、邏輯表達(dá)等問題。(3)程序的正確性和清晰性應(yīng)該是第一位的,不得損壞程序的可讀性和可靠性,其次才是提髙效率。(4盡量不使用復(fù)雜的數(shù)據(jù)結(jié)構(gòu),如:多維數(shù)組。詳細(xì)設(shè)計(jì)階段確定的算法的效率密切相關(guān),而不在于編程時(shí)對(duì)程序語句所做的細(xì)微調(diào)整。(5)仔細(xì)檢查算法中的循環(huán)和嵌套算法,盡可能減少這些算法的使用次數(shù),簡(jiǎn)化使用指針和復(fù)雜表。任務(wù)7.2語言的選擇7.2.1程序設(shè)計(jì)語言的發(fā)展過程第1代語言是與機(jī)器密切相關(guān)的機(jī)器語言,用它編寫的程序都是以二進(jìn)制代碼形式存在的機(jī)器指令,難讀、難寫、難記,而且出錯(cuò)率很高,但它突出的優(yōu)點(diǎn)是運(yùn)行效率十分高。第2代語言是比機(jī)器語言更為直觀的一些匯編語言。它的每一條助記符指令都和相應(yīng)的機(jī)器指令相對(duì)應(yīng)。并且增加了一些含有宏、符號(hào)地址等特殊功能的指令,可由機(jī)器分配和使用存儲(chǔ)空間等資源。任務(wù)7.2語言的選擇第3代語言是比匯編語言更貼近于人類語言的高級(jí)程序設(shè)計(jì)語言。其特點(diǎn)是易讀、易寫、易認(rèn)、可移植性強(qiáng)。這類語言的代表如下。(1) 基礎(chǔ)語言。如BASIC、FORTRAN、COBOL、ALGOL60等。(2) 結(jié)構(gòu)化語言。如C、PASCAL、PL/1和Ada等。(3) 面向?qū)ο笳Z言。如Smalltalk、C++、Java等。(4) 專用語言。如APL、Lisp、PROLOG等。第4代語言(4GL)將語言的抽象層次提到了一個(gè)新的高度,已不再涉及太多的算法性細(xì)節(jié)。任務(wù)7.2語言的選擇操作系統(tǒng)

編程語言微軟系列操作系統(tǒng)

C/C++,VB/VB.NET,VC++,C#,ASP.NET,Delphi支持跨平臺(tái)的操作系統(tǒng)C,Java,PowerBuilder,PHP,J2EELinux、UNIX操作系統(tǒng)C,Java,PowerBuilder,PHP所實(shí)現(xiàn)的功能編程語言編程工具C/C++,C#,VB/VB.NET,Java,VC++,ASP.NET,Delphi數(shù)據(jù)庫開發(fā)工具和平臺(tái)開發(fā)工具:VB,C#,Java,Delphi,PowerBuilder數(shù)據(jù)庫平臺(tái):Access,SQLServer,Oracle網(wǎng)頁設(shè)計(jì)

VBScript,JavaScriptASP/JSP/PHP,ASP.NET/VB.NET7.2.2程序設(shè)計(jì)言的分類系統(tǒng)開發(fā)平臺(tái)和編程語言的對(duì)應(yīng)關(guān)系表表7-2系統(tǒng)開發(fā)平臺(tái)和編程語言的選擇表7-3顯示了不同的編程語言所能實(shí)現(xiàn)的功能。表7-3軟件開發(fā)工具任務(wù)7.2語言的選擇

7.2.3選擇程序設(shè)計(jì)語言的原則1.簡(jiǎn)單2.面向?qū)ο?.分布性4.魯棒性5.安全性6.體系結(jié)構(gòu)中立7.可移植性8.解釋執(zhí)行9.高性能10.多線程11.動(dòng)態(tài)性任務(wù)7.2語言的選擇此外,還應(yīng)該考慮程序設(shè)計(jì)語言的其他一些基本規(guī)約:1.二義性2.簡(jiǎn)潔性

3.局部性和順序性4.可重用性5.可維護(hù)性

6.可移植性任務(wù)7.3源程序文檔化

任務(wù)7.3源程序文檔化好的源程序代碼的重要標(biāo)準(zhǔn)是邏輯簡(jiǎn)明清晰、易讀易懂。1.符號(hào)名的命名

2.程序的注釋

(1)序言性注釋。(2)功能性注釋。3.組織格式7.4企業(yè)設(shè)備狀況管理系統(tǒng)的實(shí)現(xiàn)案例

企業(yè)設(shè)備狀況管理系統(tǒng)的實(shí)現(xiàn)

7.4.1程序員素質(zhì)的要求1.團(tuán)隊(duì)合作意識(shí)。2.培養(yǎng)模塊化思維能力。3.培養(yǎng)測(cè)試習(xí)慣。7.4企業(yè)設(shè)備狀況管理系統(tǒng)的實(shí)現(xiàn)7.4.2規(guī)范編碼習(xí)慣本項(xiàng)目引用的案例是使用Java語言來進(jìn)行編碼的,下面探討一些有關(guān)利用Java語言來進(jìn)行編碼的規(guī)范1.命名規(guī)范。2.Java源文件樣式所有的Java源文件(*.java)都必須遵守如下的樣式規(guī)則3.代碼編寫格式(1)代碼應(yīng)該用unix的格式,而不是windows的(比如:回車變成回車+換行)。(2)文檔化。必須用javadoc來為類生成文檔。不僅因?yàn)樗菢?biāo)準(zhǔn),這也是被各種java編譯器都認(rèn)可的方法。使用@author標(biāo)記是不被推薦的,因?yàn)榇a不應(yīng)該是被個(gè)人擁有的。(3)縮進(jìn)??s進(jìn)應(yīng)該是每行2個(gè)空格,不要在源文件中保存Tab字符,在使用不同的源代碼管理工具時(shí)Tab字符將因?yàn)橛脩粼O(shè)置的不同而擴(kuò)展為不同的寬度。(4)頁寬。頁寬應(yīng)該設(shè)置為80字符,源代碼一般不會(huì)超過這個(gè)寬度,并導(dǎo)致無法完整顯示,但這一設(shè)置也可以靈活調(diào)整。在任何情況下,超長的語句應(yīng)該在一個(gè)逗號(hào)或者一個(gè)操作符后折行,一條語句折行后,應(yīng)該比原來的語句再縮進(jìn)2個(gè)字符。7.4企業(yè)設(shè)備狀況管理系統(tǒng)的實(shí)現(xiàn)7.4企業(yè)設(shè)備狀況管理系統(tǒng)的實(shí)現(xiàn)(5){}對(duì)。{}中的語句應(yīng)該單獨(dú)作為一行。例如,下面的第1行是錯(cuò)誤的,第2行是正確的。

if(j>2){j++};//錯(cuò)誤,{}放在了同一行。

if(j>2){j++};//正確,{單獨(dú)作為一行}語句永遠(yuǎn)單獨(dú)作為一行。}語句應(yīng)該縮進(jìn)到與其相對(duì)應(yīng)的{那一行相對(duì)齊的位置。

(6)括號(hào)。左括號(hào)和后一個(gè)字符之間不應(yīng)該出現(xiàn)空格,同樣,右括號(hào)和前一個(gè)字符之間也不應(yīng)該出現(xiàn)空格,下面的例子說明括號(hào)和空格的錯(cuò)誤及正確使用:fx(x);//錯(cuò)誤fx(x);//正確不要在語句中使用無意義的括號(hào),括號(hào)只應(yīng)該為達(dá)到某種目的而出現(xiàn)在源代碼中。下面的例子說明錯(cuò)誤和正確的用法:if((j)=1)//錯(cuò)誤_括號(hào)毫無意義if(j==1)or(k==2)then//正確_的確需要括號(hào)

7.4企業(yè)設(shè)備狀況管理系統(tǒng)的實(shí)現(xiàn)4.程序編寫規(guī)范

(1)exit()。exit除了在main中可以被調(diào)用外,其他的地方不應(yīng)該調(diào)用。因?yàn)檫@樣做不給任何代碼機(jī)會(huì)來截獲退出。一個(gè)類似后臺(tái)服務(wù)地程序不應(yīng)該因?yàn)槟骋粋€(gè)庫模塊決定了要退出就退出。(2)異常。申明的錯(cuò)誤應(yīng)該拋出一個(gè)RuntimeException或者派生的異常。頂層的main()函數(shù)應(yīng)該截獲所有的異常,并且打?。ɑ蛘哂涗浽谌罩局校┰谄聊簧稀?3)垃圾收集。JAVA使用成熟的后臺(tái)垃圾收集技術(shù)來代替引用計(jì)數(shù)。(4)final類絕對(duì)不要因?yàn)樾阅艿脑驅(qū)㈩惗x為final的(除非程序的框架要求),如果一個(gè)類還沒有準(zhǔn)備好被繼承,最好在類文檔中注明,而不要將她定義為final的。7.4企業(yè)設(shè)備狀況管理系統(tǒng)的實(shí)現(xiàn)5.編程技巧(1)byte數(shù)組轉(zhuǎn)換到characters(2)Utility類Utility類(僅僅提供方法的類)應(yīng)該被申明為抽象的來防止被繼承或被初始化。(3)初始化下面的代碼是一種很好的初始化數(shù)組的方法:objectArguments=newObject[]{arguments};(4)枚舉類型7.4企業(yè)設(shè)備狀況管理系統(tǒng)的實(shí)現(xiàn)(5)Swing避免使用AWT組件混合使用AWT和Swing組件如果要將AWT組件和Swing組件混合起來使用的話,請(qǐng)小心使用。實(shí)際上,盡量不要將他們混合起來使用。(6)滾動(dòng)的AWT組件AWT組件絕對(duì)不要用JscrollPane類來實(shí)現(xiàn)滾動(dòng)。滾動(dòng)AWT組件的時(shí)候一定要用AWTScrollPane組件來實(shí)現(xiàn)。避免在InternalFrame組件中使用AWT組件,盡量不要這么做,要不然會(huì)出現(xiàn)不可預(yù)料的后果。(7)Z-Order問題AWT組件總是顯示在Swing組件之上。當(dāng)使用包含AWT組件的POP-UP菜單的時(shí)候要小心,盡量不要這樣使用。7.4企業(yè)設(shè)備狀況管理系統(tǒng)的實(shí)現(xiàn)6.調(diào)試調(diào)試在軟件開發(fā)中是一個(gè)很重要的部分,存在軟件生命周期的各個(gè)部分中。調(diào)試能夠用配置開、關(guān)是最基本的。很常用的一種調(diào)試方法就是用一PrintStream類成員,在沒有定義調(diào)試流的時(shí)候就為null,類要定義一個(gè)debug方法來設(shè)置調(diào)試用的流。7.性能(1)不必要的對(duì)象構(gòu)造。(2)避免太多的使用sy

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論