第13章程序設(shè)計(jì)語言與編碼_第1頁
第13章程序設(shè)計(jì)語言與編碼_第2頁
第13章程序設(shè)計(jì)語言與編碼_第3頁
第13章程序設(shè)計(jì)語言與編碼_第4頁
第13章程序設(shè)計(jì)語言與編碼_第5頁
已閱讀5頁,還剩39頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、課程名稱:軟件工程課程名稱:軟件工程 第第21講講班班 級(jí):級(jí): 日日 期:期:教教 室:室:教學(xué)題目:第教學(xué)題目:第13章章 程序設(shè)計(jì)語言與編碼程序設(shè)計(jì)語言與編碼教學(xué)目的:了解程序設(shè)計(jì)語言的特點(diǎn)、發(fā)展,掌握選教學(xué)目的:了解程序設(shè)計(jì)語言的特點(diǎn)、發(fā)展,掌握選 擇語言的原則,理解編程標(biāo)準(zhǔn),良好編程擇語言的原則,理解編程標(biāo)準(zhǔn),良好編程 風(fēng)格。風(fēng)格。教學(xué)重點(diǎn):選擇語言的原則,編程標(biāo)準(zhǔn),編程風(fēng)格。教學(xué)重點(diǎn):選擇語言的原則,編程標(biāo)準(zhǔn),編程風(fēng)格。教學(xué)難點(diǎn):選擇語言的原則,編程標(biāo)準(zhǔn)。教學(xué)難點(diǎn):選擇語言的原則,編程標(biāo)準(zhǔn)。教教 具:多媒體教室、電子教案具:多媒體教室、電子教案作作 業(yè):業(yè):l編碼編碼以詳細(xì)設(shè)計(jì)說明

2、書為輸入,將以詳細(xì)設(shè)計(jì)說明書為輸入,將該輸入用某種程序設(shè)計(jì)語言翻譯成計(jì)算該輸入用某種程序設(shè)計(jì)語言翻譯成計(jì)算l 機(jī)可以理解并最終可運(yùn)行的代碼的過機(jī)可以理解并最終可運(yùn)行的代碼的過程。程。l本章介紹程序設(shè)計(jì)語言的特點(diǎn)、發(fā)展和本章介紹程序設(shè)計(jì)語言的特點(diǎn)、發(fā)展和分類、開發(fā)時(shí)選擇程序設(shè)計(jì)語言的標(biāo)準(zhǔn)、分類、開發(fā)時(shí)選擇程序設(shè)計(jì)語言的標(biāo)準(zhǔn)、編程質(zhì)量與程序設(shè)計(jì)語言的關(guān)系、編程編程質(zhì)量與程序設(shè)計(jì)語言的關(guān)系、編程標(biāo)準(zhǔn)和編程風(fēng)格,最后簡(jiǎn)單介紹目前程標(biāo)準(zhǔn)和編程風(fēng)格,最后簡(jiǎn)單介紹目前程序設(shè)計(jì)的支持環(huán)境。序設(shè)計(jì)的支持環(huán)境。l語言的幾種特性。語言的幾種特性。 1)一致性()一致性(Uniformity) 指語言中采用的標(biāo)記(指

3、語言中采用的標(biāo)記(Token)法協(xié)調(diào)一致的)法協(xié)調(diào)一致的程度。程度。 例如例如“”在在C語言中即可以在聲明中表示其后語言中即可以在聲明中表示其后的變量為指針變量,又可作間接訪問運(yùn)算符,的變量為指針變量,又可作間接訪問運(yùn)算符,還可以作乘法運(yùn)算符,這種還可以作乘法運(yùn)算符,這種“一詞多用一詞多用” 、一、一致性不好的語言程序不僅可讀性差,而且在編致性不好的語言程序不僅可讀性差,而且在編寫程序的過程中容易出錯(cuò)。寫程序的過程中容易出錯(cuò)。l語言的幾種特性。語言的幾種特性。 2)二義性()二義性(ambiguity) 語言的二義性是指語言是否允許使語言的二義性是指語言是否允許使用具有二義性的語句。允許使用二

4、用具有二義性的語句。允許使用二義性語句的語言在可理解性和可修義性語句的語言在可理解性和可修改性上都要差一些。改性上都要差一些。l語言的幾種特性。語言的幾種特性。3)緊致性()緊致性(compactness) 緊致性是指程序員寫程序時(shí)必須記憶的關(guān)于語緊致性是指程序員寫程序時(shí)必須記憶的關(guān)于語言的信息總量。決定緊致性的指標(biāo)包括:言的信息總量。決定緊致性的指標(biāo)包括:語言對(duì)結(jié)構(gòu)化的支持程度。語言對(duì)結(jié)構(gòu)化的支持程度。關(guān)鍵字及操作符的數(shù)目,顯然關(guān)鍵字和操作符關(guān)鍵字及操作符的數(shù)目,顯然關(guān)鍵字和操作符的數(shù)目越多,則緊致性越差。的數(shù)目越多,則緊致性越差。標(biāo)準(zhǔn)函數(shù)的個(gè)數(shù)及復(fù)雜程度。標(biāo)準(zhǔn)函數(shù)的個(gè)數(shù)及復(fù)雜程度。l通常緊

5、致性和一致性是矛盾的。在選擇程序語通常緊致性和一致性是矛盾的。在選擇程序語言時(shí),必須在這兩者之間找到平衡點(diǎn)。言時(shí),必須在這兩者之間找到平衡點(diǎn)。l語言的幾種特性。語言的幾種特性。4)局部性)局部性(locality) 局部性是指語言的模塊化和信息隱藏特局部性是指語言的模塊化和信息隱藏特性。一個(gè)局部性差的語言必然會(huì)導(dǎo)致程性。一個(gè)局部性差的語言必然會(huì)導(dǎo)致程序的復(fù)雜性增加。比如,一種不具有塊序的復(fù)雜性增加。比如,一種不具有塊機(jī)制的語言,那么信息的作用域必然是機(jī)制的語言,那么信息的作用域必然是全局的,程序的走向也是全局的,從而全局的,程序的走向也是全局的,從而導(dǎo)致程序的復(fù)雜性增加,可讀性、可修導(dǎo)致程序的

6、復(fù)雜性增加,可讀性、可修改性和可維護(hù)性都會(huì)相應(yīng)降低。改性和可維護(hù)性都會(huì)相應(yīng)降低。1)將設(shè)計(jì)翻譯成代碼的難易程度)將設(shè)計(jì)翻譯成代碼的難易程度 設(shè)計(jì)階段的輸出是編碼階段的輸入,因設(shè)計(jì)階段的輸出是編碼階段的輸入,因此以設(shè)計(jì)說明書為輸入編寫代碼時(shí)程序此以設(shè)計(jì)說明書為輸入編寫代碼時(shí)程序語言對(duì)設(shè)計(jì)概念的支持程度就決定了翻語言對(duì)設(shè)計(jì)概念的支持程度就決定了翻譯過程的難易。譯過程的難易。 如果在分析階段和設(shè)計(jì)階段采用的是面如果在分析階段和設(shè)計(jì)階段采用的是面向?qū)ο蟮姆椒?,而在編碼階段采用的是向?qū)ο蟮姆椒?,而在編碼階段采用的是面向過程的語言,那么這種翻譯就比較面向過程的語言,那么這種翻譯就比較困難。困難。2)編譯器

7、所生成代碼的效率)編譯器所生成代碼的效率 對(duì)于實(shí)時(shí)或時(shí)間關(guān)鍵性的項(xiàng)目來說,除對(duì)于實(shí)時(shí)或時(shí)間關(guān)鍵性的項(xiàng)目來說,除在設(shè)計(jì)和編碼時(shí)對(duì)效率進(jìn)行充分的考慮在設(shè)計(jì)和編碼時(shí)對(duì)效率進(jìn)行充分的考慮外,高效率的編譯器也是必須的。好的外,高效率的編譯器也是必須的。好的編譯器會(huì)對(duì)程序作最佳的性能優(yōu)化。不編譯器會(huì)對(duì)程序作最佳的性能優(yōu)化。不同語言生成的目標(biāo)系統(tǒng)的效率不同,即同語言生成的目標(biāo)系統(tǒng)的效率不同,即使是同一種語言,采用不同的編譯器,使是同一種語言,采用不同的編譯器,目標(biāo)系統(tǒng)的效率也會(huì)不同。目標(biāo)系統(tǒng)的效率也會(huì)不同。3)源代碼的可移植性)源代碼的可移植性 選擇一種可移植性強(qiáng)的語言可以為代碼選擇一種可移植性強(qiáng)的語言可以

8、為代碼的重用和項(xiàng)目的移植奠定好的基礎(chǔ)。源的重用和項(xiàng)目的移植奠定好的基礎(chǔ)。源代碼的可移植性也是選擇開發(fā)語言要考代碼的可移植性也是選擇開發(fā)語言要考慮的因素。慮的因素。 4)配套的開發(fā)工具)配套的開發(fā)工具 主流的語言都有良好的集成開發(fā)環(huán)境主流的語言都有良好的集成開發(fā)環(huán)境(IDE)。其中不僅包括源代碼的編輯)。其中不僅包括源代碼的編輯器、編譯和連接器、調(diào)試器,同時(shí)還包器、編譯和連接器、調(diào)試器,同時(shí)還包含配置管理工具、安裝部署工具以及代含配置管理工具、安裝部署工具以及代碼的轉(zhuǎn)換工具。碼的轉(zhuǎn)換工具。l第一代:機(jī)器語言和匯編語言,也稱為第一代:機(jī)器語言和匯編語言,也稱為低級(jí)語言。低級(jí)語言。l第二代:第一代和

9、第三代的過渡語言。第二代:第一代和第三代的過渡語言。這代語言是這代語言是50年代末至年代末至60年代初出現(xiàn)的,年代初出現(xiàn)的,這些語言應(yīng)用面廣,有大量成熟的程序這些語言應(yīng)用面廣,有大量成熟的程序庫。這代語言包括庫。這代語言包括FORTRAN、COBOL、BASIC等。等。l第三代語言:高級(jí)語言。第三代語言:高級(jí)語言。l高級(jí)語言通常被分成三類:高級(jí)語言通常被分成三類: 1)通用高級(jí)語言。)通用高級(jí)語言。Algol 60,C、Pascal, PL/1,Modula-2和和Ada等。等。 2)面向?qū)ο蟮恼Z言,如)面向?qū)ο蟮恼Z言,如C+、Java、 Smalltalk等。等。 3)專用語言,專用語言只用

10、于特定的領(lǐng)域。)專用語言,專用語言只用于特定的領(lǐng)域。 LISP和和Prolog適用于人工智能領(lǐng)域;適用于人工智能領(lǐng)域; APL是為數(shù)組和向量運(yùn)算設(shè)計(jì)的語言;是為數(shù)組和向量運(yùn)算設(shè)計(jì)的語言; 而而Forth則用于開發(fā)微處理器軟件。則用于開發(fā)微處理器軟件。 專用語言可移植性和可維護(hù)性較差。專用語言可移植性和可維護(hù)性較差。l第四代語言(第四代語言(4GL) 4GL還局限在某些領(lǐng)域內(nèi),如數(shù)據(jù)庫查還局限在某些領(lǐng)域內(nèi),如數(shù)據(jù)庫查詢語言。詢語言。 程序生成器代表了更為通用的一類程序生成器代表了更為通用的一類4GL,程序生成器可以將更為自然的語言描述程序生成器可以將更為自然的語言描述翻譯成第三代語言程序,進(jìn)而更

11、好地消翻譯成第三代語言程序,進(jìn)而更好地消除設(shè)計(jì)和代碼之間的語義斷層。除設(shè)計(jì)和代碼之間的語義斷層。l選擇語言時(shí)要考慮的因素:選擇語言時(shí)要考慮的因素: 1)項(xiàng)目的應(yīng)用領(lǐng)域)項(xiàng)目的應(yīng)用領(lǐng)域 2)項(xiàng)目中算法和計(jì)算的復(fù)雜性)項(xiàng)目中算法和計(jì)算的復(fù)雜性 3)項(xiàng)目中數(shù)據(jù)結(jié)構(gòu)的復(fù)雜性)項(xiàng)目中數(shù)據(jù)結(jié)構(gòu)的復(fù)雜性 4)用戶的性能需求)用戶的性能需求 5)軟件運(yùn)行的環(huán)境)軟件運(yùn)行的環(huán)境 6)軟件開發(fā)人員開發(fā)水平。)軟件開發(fā)人員開發(fā)水平。 7)可用的編譯器和交叉編譯器。)可用的編譯器和交叉編譯器。l程序的可靠性、可維護(hù)性和效率通常由程序的可靠性、可維護(hù)性和效率通常由程序設(shè)計(jì)語言、源代碼的質(zhì)量、和語言程序設(shè)計(jì)語言、源代碼的

12、質(zhì)量、和語言的實(shí)現(xiàn)機(jī)制決定的。的實(shí)現(xiàn)機(jī)制決定的。 13.2.1 程序設(shè)計(jì)語言與可靠性程序設(shè)計(jì)語言與可靠性 l程序設(shè)計(jì)語言的可靠性是指程序設(shè)計(jì)語程序設(shè)計(jì)語言的可靠性是指程序設(shè)計(jì)語言本身不出錯(cuò)或?qū)﹀e(cuò)誤的糾正能力。言本身不出錯(cuò)或?qū)﹀e(cuò)誤的糾正能力。l如:如:JAVA由于其拋棄了指針和動(dòng)態(tài)存儲(chǔ)由于其拋棄了指針和動(dòng)態(tài)存儲(chǔ)分配等易于出錯(cuò)的語言特性。從而具有分配等易于出錯(cuò)的語言特性。從而具有較高的可靠性。較高的可靠性。l程序設(shè)計(jì)語言的可維護(hù)性通常指這種語言編寫的程序程序設(shè)計(jì)語言的可維護(hù)性通常指這種語言編寫的程序被理解,被修改及調(diào)整和改進(jìn)的難易程度。被理解,被修改及調(diào)整和改進(jìn)的難易程度。l程序設(shè)計(jì)語言的可維護(hù)性

13、一般由下面幾個(gè)因素決定:程序設(shè)計(jì)語言的可維護(hù)性一般由下面幾個(gè)因素決定:l程序設(shè)計(jì)語言的一致性和緊致性程序設(shè)計(jì)語言的一致性和緊致性l 一致性刻畫了語言標(biāo)記的語義單義性,因此一致性一致性刻畫了語言標(biāo)記的語義單義性,因此一致性好的語言的可維護(hù)性要好于一致性差的語言。好的語言的可維護(hù)性要好于一致性差的語言。l程序設(shè)計(jì)語言的語法規(guī)則程序設(shè)計(jì)語言的語法規(guī)則l 語法規(guī)則的嚴(yán)格程度也影響語言的可維護(hù)性和可讀語法規(guī)則的嚴(yán)格程度也影響語言的可維護(hù)性和可讀性,語法要求嚴(yán)格的語言要比語法自由的語言的可維性,語法要求嚴(yán)格的語言要比語法自由的語言的可維護(hù)性差些。因?yàn)樾薷暮屠斫庹Z法嚴(yán)格的語言要困難些。護(hù)性差些。因?yàn)樾薷暮屠?/p>

14、解語法嚴(yán)格的語言要困難些。比如比如FORTRAN和和Perl語言,其語法要求很嚴(yán)格。因語言,其語法要求很嚴(yán)格。因此其可維護(hù)性與此其可維護(hù)性與C/C+等語法較自由的語言相比要差等語法較自由的語言相比要差些。些。l不同程序設(shè)計(jì)語言在程序的效率上的差異很大。不同程序設(shè)計(jì)語言在程序的效率上的差異很大。程序設(shè)計(jì)語言的效率由下面因素決定:程序設(shè)計(jì)語言的效率由下面因素決定: 程序設(shè)計(jì)語言的實(shí)現(xiàn)機(jī)制;程序設(shè)計(jì)語言的實(shí)現(xiàn)機(jī)制; 解釋性程序(如解釋解釋性程序(如解釋BASIC)和編譯成中間)和編譯成中間語言然后又解釋執(zhí)行的語言(如語言然后又解釋執(zhí)行的語言(如JAVA)的效)的效率一般要遠(yuǎn)遠(yuǎn)低于編譯語言。率一般要遠(yuǎn)

15、遠(yuǎn)低于編譯語言。 程序語言對(duì)系統(tǒng)底層的訪問和控制能力;程序語言對(duì)系統(tǒng)底層的訪問和控制能力; 設(shè)計(jì)良好的低級(jí)語言程序效率最高。設(shè)計(jì)良好的低級(jí)語言程序效率最高。 編譯器的效率;編譯器的效率;l編碼的依據(jù)是詳細(xì)設(shè)計(jì)說明書。編碼的編碼的依據(jù)是詳細(xì)設(shè)計(jì)說明書。編碼的任務(wù)就是按照詳細(xì)設(shè)計(jì)說明的要求寫出任務(wù)就是按照詳細(xì)設(shè)計(jì)說明的要求寫出滿足要求的代碼。設(shè)計(jì)階段的成果基本滿足要求的代碼。設(shè)計(jì)階段的成果基本上決定了系統(tǒng)的可修改性和可維護(hù)性。上決定了系統(tǒng)的可修改性和可維護(hù)性。l在編碼階段,遵循下述原則,將有助于在編碼階段,遵循下述原則,將有助于編寫清晰、緊湊、高效的程序。從而進(jìn)編寫清晰、緊湊、高效的程序。從而進(jìn)一

16、步提高程序的可修改性、可維護(hù)性和一步提高程序的可修改性、可維護(hù)性和可測(cè)試性??蓽y(cè)試性。1)編寫易于修改和維護(hù)的代碼)編寫易于修改和維護(hù)的代碼 編碼階段,在設(shè)計(jì)基礎(chǔ)上對(duì)程序進(jìn)行進(jìn)編碼階段,在設(shè)計(jì)基礎(chǔ)上對(duì)程序進(jìn)行進(jìn)一步的數(shù)據(jù)和操作的分離有利于代碼和一步的數(shù)據(jù)和操作的分離有利于代碼和數(shù)據(jù)的單獨(dú)改變。數(shù)據(jù)的單獨(dú)改變。 2)編寫易于測(cè)試的代碼)編寫易于測(cè)試的代碼 在編碼階段對(duì)代碼的可測(cè)試性進(jìn)行考慮在編碼階段對(duì)代碼的可測(cè)試性進(jìn)行考慮可以減少測(cè)試階段的工作量。以條件編可以減少測(cè)試階段的工作量。以條件編譯和注釋的方法融入源代碼中,是一種譯和注釋的方法融入源代碼中,是一種有效的增加代碼可測(cè)試性的手段。有效的增加

17、代碼可測(cè)試性的手段。3)編寫詳細(xì)的程序文檔)編寫詳細(xì)的程序文檔l程序文檔一般指以注釋的形式嵌入程序中的代程序文檔一般指以注釋的形式嵌入程序中的代碼描述。程序文檔應(yīng)該與程序保持高度一致。碼描述。程序文檔應(yīng)該與程序保持高度一致。l程序文檔應(yīng)該包括下列內(nèi)容程序文檔應(yīng)該包括下列內(nèi)容 代碼的功能;代碼的功能; 代碼的完成者;代碼的完成者; 代碼在整個(gè)軟件系統(tǒng)中的位置;代碼在整個(gè)軟件系統(tǒng)中的位置; 代碼編制、復(fù)審時(shí)間;代碼編制、復(fù)審時(shí)間; 保留代碼的原因;保留代碼的原因; 代碼中如何使用數(shù)據(jù)結(jié)構(gòu)和算法。代碼中如何使用數(shù)據(jù)結(jié)構(gòu)和算法。/* Modual name: gameserver Function:

18、game server for realtime game information process Author: chejinhui Create date: 2003/11/12 Platform: IA32,Windows Modify list: 2003/11/14 line 28 should be = 2003/11/15 line 29 .*/ /*-include stdio&socket libarary-*/#include #include /*-Global var area-*/ int iUserCount;/*-Initialize Socket Sub

19、systeminput: noneoutput:DLL initialize result0:faultother:success-*/int InitSockInterface( ) WORD wVersionRequested; WSADATA wsaData; int err; wVersionRequested = MAKEWORD( 2, 2 ); /start socket subsystem err = WSAStartup( wVersionRequested, &wsaData ); if ( err != 0 ) return 0; /see if socket v

20、ersion meet our request (must be 2.2 ) if ( LOBYTE( wsaData.wVersion ) != 2 | HIBYTE( wsaData.wVersion ) != 2 ) WSACleanup(); return 0; /*- this is the end of program document demo -*/4)編程中采用統(tǒng)一的標(biāo)準(zhǔn)和約定,降低程)編程中采用統(tǒng)一的標(biāo)準(zhǔn)和約定,降低程序的復(fù)雜性序的復(fù)雜性 軟件組織通常會(huì)制定一份軟件組織通常會(huì)制定一份“編碼規(guī)范編碼規(guī)范”,程序員在編寫代碼時(shí)。必須嚴(yán)格按照程序員在編寫代碼時(shí)。必須嚴(yán)格按照“編碼

21、規(guī)范編碼規(guī)范”編寫代碼。表編寫代碼。表13-1是軟件是軟件組織組織“編碼規(guī)范編碼規(guī)范”的通用格式和內(nèi)容。的通用格式和內(nèi)容。規(guī)范項(xiàng)規(guī)范項(xiàng)規(guī)范內(nèi)容規(guī)范內(nèi)容1 排版排版排版格式,如縮進(jìn)、塊語句、分行等排版格式,如縮進(jìn)、塊語句、分行等2 注釋注釋規(guī)范注釋的格式規(guī)范注釋的格式3 標(biāo)識(shí)符命名標(biāo)識(shí)符命名規(guī)范標(biāo)識(shí)符的命名規(guī)則規(guī)范標(biāo)識(shí)符的命名規(guī)則4 可讀性可讀性為提高可讀性所作的規(guī)范,如禁止使用技巧性高的語句為提高可讀性所作的規(guī)范,如禁止使用技巧性高的語句5 變量、結(jié)構(gòu)變量、結(jié)構(gòu)規(guī)范變量和結(jié)構(gòu)的定義,如禁止局部與全局變量同名等規(guī)范變量和結(jié)構(gòu)的定義,如禁止局部與全局變量同名等6 函數(shù)、過程函數(shù)、過程規(guī)范函數(shù)的定義

22、,如規(guī)范函數(shù)的定義,如“不要設(shè)計(jì)多用途面面俱到的函數(shù)不要設(shè)計(jì)多用途面面俱到的函數(shù)”7 可測(cè)性可測(cè)性為提高可測(cè)性的規(guī)范,如為提高可測(cè)性的規(guī)范,如“用斷言確認(rèn)函數(shù)的參數(shù)用斷言確認(rèn)函數(shù)的參數(shù)”等等8 程序效率程序效率為程序效率所作的規(guī)范,如為程序效率所作的規(guī)范,如“循環(huán)體內(nèi)工作量最小化循環(huán)體內(nèi)工作量最小化”9 質(zhì)量保證質(zhì)量保證為提高軟件質(zhì)量所作的規(guī)范,如為提高軟件質(zhì)量所作的規(guī)范,如“防止內(nèi)存操作越界防止內(nèi)存操作越界”5)分離功能獨(dú)立的代碼塊形成新的模塊)分離功能獨(dú)立的代碼塊形成新的模塊將功能獨(dú)立的代碼塊獨(dú)立出來形成新的將功能獨(dú)立的代碼塊獨(dú)立出來形成新的模塊,增加模塊的內(nèi)聚度,有利于代碼模塊,增加模塊

23、的內(nèi)聚度,有利于代碼的重用和可修改性。的重用和可修改性。l不同的程序員可能具有不同的編程風(fēng)格,有時(shí)不同的程序員可能具有不同的編程風(fēng)格,有時(shí)候很難說哪種風(fēng)格好,哪種風(fēng)格不好,比如在候很難說哪種風(fēng)格好,哪種風(fēng)格不好,比如在分支語句之后的語句塊,一些程序員可能習(xí)慣分支語句之后的語句塊,一些程序員可能習(xí)慣這樣:這樣:if(ab).而另外的程序員喜歡這樣:而另外的程序員喜歡這樣:if(ab).l一般的軟件組織允許程序員在不影一般的軟件組織允許程序員在不影響代碼的可讀性、可修改性、可測(cè)響代碼的可讀性、可修改性、可測(cè)試性、可維護(hù)性的基礎(chǔ)上使用自己試性、可維護(hù)性的基礎(chǔ)上使用自己的風(fēng)格編寫程序。但是有些規(guī)則則的

24、風(fēng)格編寫程序。但是有些規(guī)則則是所有程序員必須遵守的。是所有程序員必須遵守的。1)節(jié)簡(jiǎn)化()節(jié)簡(jiǎn)化(economy)不使用不必要的變量和函數(shù)不使用不必要的變量和函數(shù)避免變量重名,變量重名可導(dǎo)致很難被發(fā)現(xiàn)避免變量重名,變量重名可導(dǎo)致很難被發(fā)現(xiàn)的錯(cuò)誤。的錯(cuò)誤。盡量減小代碼量。盡量減小代碼量。盡量減少代碼的執(zhí)行時(shí)間,提高執(zhí)行效率。盡量減少代碼的執(zhí)行時(shí)間,提高執(zhí)行效率。避免功能冗余的模塊。避免功能冗余的模塊。盡量不使用全局變量。盡量不使用全局變量。2)模塊化()模塊化(Modularity) 確保物理和邏輯功能密切相關(guān)。確保物理和邏輯功能密切相關(guān)。 限定一個(gè)模塊完成一個(gè)獨(dú)立的功能,限定一個(gè)模塊完成一個(gè)獨(dú)

25、立的功能, 提高模塊的內(nèi)聚度。提高模塊的內(nèi)聚度。 檢查代碼的重復(fù)率,重復(fù)多的代碼,檢查代碼的重復(fù)率,重復(fù)多的代碼, 要抽出來作為一個(gè)單獨(dú)的模塊。要抽出來作為一個(gè)單獨(dú)的模塊。3)簡(jiǎn)單化()簡(jiǎn)單化(Simplicity) 采用直接了當(dāng)?shù)乃惴?,避免使用技巧采用直接了?dāng)?shù)乃惴ǎ苊馐褂眉记?性高和難懂的代碼。性高和難懂的代碼。 使用簡(jiǎn)單的數(shù)據(jù)結(jié)構(gòu),避免使用多維使用簡(jiǎn)單的數(shù)據(jù)結(jié)構(gòu),避免使用多維 數(shù)組、指針和復(fù)雜的表。數(shù)組、指針和復(fù)雜的表。 注意對(duì)象命名的一致性。注意對(duì)象命名的一致性。 以手工的方式簡(jiǎn)化算術(shù)和邏輯表達(dá)式。以手工的方式簡(jiǎn)化算術(shù)和邏輯表達(dá)式。4)結(jié)構(gòu)化)結(jié)構(gòu)化按標(biāo)準(zhǔn)化的次序說明數(shù)據(jù);按標(biāo)準(zhǔn)化的

26、次序說明數(shù)據(jù);按字母順序說明對(duì)象名按字母順序說明對(duì)象名使用讀者明了的結(jié)構(gòu)化程序部件;使用讀者明了的結(jié)構(gòu)化程序部件;采用直截了當(dāng)?shù)乃惴?;采用直截了?dāng)?shù)乃惴?;根?jù)應(yīng)用背景排列程序各個(gè)部分;根據(jù)應(yīng)用背景排列程序各個(gè)部分;4)結(jié)構(gòu)化()結(jié)構(gòu)化(structure)不隨意為效率而犧牲程序的清晰度和可讀性;不隨意為效率而犧牲程序的清晰度和可讀性;讓機(jī)器多做煩瑣的工作,如重復(fù)、庫函數(shù);讓機(jī)器多做煩瑣的工作,如重復(fù)、庫函數(shù);用公共函數(shù)調(diào)用代替重復(fù)出現(xiàn)的表達(dá)式;用公共函數(shù)調(diào)用代替重復(fù)出現(xiàn)的表達(dá)式;避免循環(huán)、分支的嵌套層數(shù)過高;避免循環(huán)、分支的嵌套層數(shù)過高;單入口單出口。單入口單出口。5)文檔化()文檔化(documentation)有效、適當(dāng)?shù)厥褂米⑨?。有效、適當(dāng)?shù)厥褂米⑨?。協(xié)調(diào)使用程序塊注釋和程序行注釋。協(xié)調(diào)使用程序塊注釋和程序行注釋。保持文檔和程序的同步。保持文檔和程序的同步。6)格式化()格式化(layout)始終采用統(tǒng)一縮進(jìn)規(guī)則;始終采用統(tǒng)一縮進(jìn)規(guī)則;適當(dāng)插入括號(hào)表明運(yùn)算次序、排除二義性;適當(dāng)插入括號(hào)表明運(yùn)算次序、排除二義性;有效地使用空格符以區(qū)別程序的不同意群。有效地使用空格符以區(qū)別程序的不同意群。lPSE,programmi

溫馨提示

  • 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)論