軟件工程程序設(shè)計語言和編碼_第1頁
軟件工程程序設(shè)計語言和編碼_第2頁
軟件工程程序設(shè)計語言和編碼_第3頁
軟件工程程序設(shè)計語言和編碼_第4頁
軟件工程程序設(shè)計語言和編碼_第5頁
已閱讀5頁,還剩70頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

軟件工程程序設(shè)計語言和編碼第1頁,共75頁,2023年,2月20日,星期日實現(xiàn)編碼和測試統(tǒng)稱為實現(xiàn)第2頁,共75頁,2023年,2月20日,星期日軟件實現(xiàn)從宏觀上講,軟件實現(xiàn)包括詳細(xì)設(shè)計、編程實現(xiàn)、單元測試和集成測試。從微觀上講,軟件實現(xiàn)是指編程和單元測試。本章只講編程實現(xiàn)方法,包括編碼風(fēng)格。還要求完成:

1)《用戶使用手冊》的編寫

2)《用戶安裝手冊》的編寫

第3頁,共75頁,2023年,2月20日,星期日第13章 程序設(shè)計語言與編碼ProgramminglanguagesandCoding編碼——以詳細(xì)設(shè)計說明書為輸入,將該輸入用某種程序設(shè)計語言翻譯成計算機(jī)可以理解并最終可運(yùn)行的代碼的過程。本章介紹程序設(shè)計語言的特點(diǎn)、發(fā)展和分類、開發(fā)時選擇程序設(shè)計語言的標(biāo)準(zhǔn)、編程質(zhì)量與程序設(shè)計語言的關(guān)系、編程標(biāo)準(zhǔn)和編程風(fēng)格,最后簡單介紹目前程序設(shè)計的支持環(huán)境。

第4頁,共75頁,2023年,2月20日,星期日第13章程序設(shè)計語言和編碼編碼階段不應(yīng)單純追求編碼效率,而應(yīng)全面考慮編寫程序、測試程序、說明程序和修改程序等各項工作。影響編碼質(zhì)量的因素包括編程語言、編程準(zhǔn)則和編程風(fēng)格,它們對程序的可靠性、可讀性、可測試性和可維護(hù)性都將產(chǎn)生一定的影響。

第5頁,共75頁,2023年,2月20日,星期日13.1程序設(shè)計語言編碼的過程就是把詳細(xì)設(shè)計翻譯成可執(zhí)行代碼的過程,也是人借助編程語言與計算機(jī)通信的過程。編程語言的種種特性必然影響到翻譯和通信過程的質(zhì)量和效率。程序設(shè)計語言既要支持軟件工程的原理,又要符合程序員的心理。

第6頁,共75頁,2023年,2月20日,星期日第13章程序設(shè)計語言和編碼13.1程序設(shè)計語言程序設(shè)計語言的特性程序設(shè)計語言的發(fā)展和分類程序設(shè)計語言的選擇標(biāo)準(zhǔn)13.2編程質(zhì)量與程序設(shè)計語言13.3編程標(biāo)準(zhǔn)和原則13.4編程/編碼風(fēng)格13.5程序設(shè)計支持環(huán)境(PSE)附錄1:編碼風(fēng)格的規(guī)則和體現(xiàn)

第7頁,共75頁,2023年,2月20日,星期日程序設(shè)計語言的特性心理特性/心理學(xué)觀點(diǎn)工程特性/工程觀點(diǎn)語言特性技術(shù)特性/或稱基本機(jī)制第8頁,共75頁,2023年,2月20日,星期日13.1程序設(shè)計語言

13.1.1程序設(shè)計語言的特點(diǎn)

一、心理特性/心理學(xué)觀點(diǎn)1)一致性(Uniformity)2)二義性(ambiguity)3)緊致性(compactness)4)局部性(locality)

線性(Linearity)

傳統(tǒng)性

第9頁,共75頁,2023年,2月20日,星期日13.1程序設(shè)計語言

13.1.1程序設(shè)計語言的特點(diǎn)

語言的幾種特性(心理特性/心理學(xué)觀點(diǎn))

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

第10頁,共75頁,2023年,2月20日,星期日13.1.1程序設(shè)計語言的特點(diǎn)語言的幾種特性(心理特性/心理學(xué)觀點(diǎn))2)二義性(ambiguity)語言的二義性是指語言是否允許使用具有二義性的語句。允許使用二義性語句的語言在可理解性和可修改性上都要差一些。

第11頁,共75頁,2023年,2月20日,星期日13.1.1程序設(shè)計語言的特點(diǎn)語言的幾種特性(心理特性/心理學(xué)觀點(diǎn))3)緊致性(compactness)緊致性是指程序員寫程序時必須記憶的關(guān)于語言的信息總量。決定緊致性的指標(biāo)包括:①語言對結(jié)構(gòu)化的支持程度。②關(guān)鍵字及操作符的數(shù)目,顯然關(guān)鍵字和操作符的數(shù)目越多,則緊致性越差。③標(biāo)準(zhǔn)函數(shù)的個數(shù)及復(fù)雜程度。通常緊致性和一致性是矛盾的。在選擇程序語言時,必須在這兩者之間找到平衡點(diǎn)。

第12頁,共75頁,2023年,2月20日,星期日13.1.1程序設(shè)計語言的特點(diǎn)語言的幾種特性(心理特性/心理學(xué)觀點(diǎn))4)局部性(locality)

局部性是指語言的模塊化和信息隱藏特性。一個局部性差的語言必然會導(dǎo)致程序的復(fù)雜性增加。比如,一種不具有塊機(jī)制的語言,那么信息的作用域必然是全局的,程序的走向也是全局的,從而導(dǎo)致程序的復(fù)雜性增加,可讀性、可修改性和可維護(hù)性都會相應(yīng)降低。

第13頁,共75頁,2023年,2月20日,星期日13.1.1程序設(shè)計語言的特性影響程序員心理的語言特性還有:線性(Linearity):人們習(xí)慣于按邏輯上線性的次序理解程序,程序中大量的分支和循環(huán)、隨意的GOTO語句會破壞程序的線性,提倡結(jié)構(gòu)化程序設(shè)計。傳統(tǒng)性:傳統(tǒng)性容易影響人們學(xué)習(xí)新語種的積極性

第14頁,共75頁,2023年,2月20日,星期日13.1程序設(shè)計語言

13.1.1程序設(shè)計語言的特點(diǎn)

二、工程特性/工程觀點(diǎn)1)將設(shè)計翻譯成代碼的難易程度2)編譯器所生成代碼的效率3)源代碼的可移植性4)配套的開發(fā)工具5)可維護(hù)性(語言本身的自說明特性)

第15頁,共75頁,2023年,2月20日,星期日程序語言其他連帶的特性:工程特性1)將設(shè)計翻譯成代碼的難易程度例:語言對OOD的支持直接支持面向?qū)ο蠓椒ǖ恼Z言一般提供抽象數(shù)據(jù)類型(即類)和繼承的機(jī)制。例13.1:定義抽象數(shù)據(jù)類型Sensor(傳感器)例13.2:定義Sensor的子類CriticalSensor例13.3:假設(shè)一個傳感器一定裝在某座建筑物上,而一座建筑物內(nèi)可安裝多種傳感器,表示此關(guān)系。

第16頁,共75頁,2023年,2月20日,星期日程序語言其他連帶的特性:工程特性1)將設(shè)計翻譯成代碼的難易程度例:語言對OOD的支持Ada這類語言雖能支持抽象數(shù)據(jù)類型,但不能直接支持繼承、消息傳遞、動態(tài)鏈接等概念,一般認(rèn)為Ada是基于對象的語言。Ada的程序包能將數(shù)據(jù)結(jié)構(gòu)(屬性)和作用在數(shù)據(jù)結(jié)構(gòu)上的操作(方法)很好地封裝起來,形成一個類。例13.1、13.2、13.3用Ada對應(yīng)的描述。

第17頁,共75頁,2023年,2月20日,星期日程序語言其他連帶的特性:工程特性1)將設(shè)計翻譯成代碼的難易程度例:語言對OOD的支持傳統(tǒng)語言(如C語言)對數(shù)據(jù)抽象、封裝等概念的支持較基于對象的語言(如Ada)更弱。類與對象在C語言中,只好用結(jié)構(gòu)表示。例13.1、13.2、13.3用C語言的描述。

第18頁,共75頁,2023年,2月20日,星期日13.1程序設(shè)計語言

13.1.1程序設(shè)計語言的特點(diǎn)

三、語言特性從語言級別看低級語言高級語言超高級語言從應(yīng)用范圍看通用語言專用語言

從對用戶要求看過程式語言非過程式語言從語言所含的成分看順序語言并發(fā)語言分布式語言第19頁,共75頁,2023年,2月20日,星期日13.1程序設(shè)計語言

13.1.1程序設(shè)計語言的特點(diǎn)

四、技術(shù)特性/或稱基本機(jī)制

1.名字說明和類型說明

2.變量初始化

3.程序?qū)ο蟮木植啃?/p>

4.程序塊結(jié)構(gòu)

5.程序控制結(jié)構(gòu)

6.異常處理

7.獨(dú)立編譯機(jī)制

第20頁,共75頁,2023年,2月20日,星期日13.1程序設(shè)計語言

13.1.1程序設(shè)計語言的特點(diǎn)

四、技術(shù)特性/或稱基本機(jī)制

(1)對象說明(名字說明)(2)數(shù)據(jù)類型的定義和檢查

(3)子程序

(4)控制結(jié)構(gòu)

(5)函數(shù)式,數(shù)據(jù)對象定義和函數(shù)定義

(6)Horn子句,事實和規(guī)則、邏輯推理

(7)類、子類、對象和實例,繼承

第21頁,共75頁,2023年,2月20日,星期日13.1程序設(shè)計語言

13.1.1程序設(shè)計語言的特點(diǎn)

四、技術(shù)特性/或稱基本機(jī)制根據(jù)基本機(jī)制可將程序設(shè)計語言分為過程式程序設(shè)計語言、函數(shù)式程序設(shè)計語言、邏輯程序設(shè)計語言和面向?qū)ο蟪绦蛟O(shè)計語言四類。

第22頁,共75頁,2023年,2月20日,星期日13.1.2程序設(shè)計語言的發(fā)展和分類程序設(shè)計語言的分類按語言級別:低級語言和高級語言;按應(yīng)用范圍:通用語言和專用語言;按用戶要求:過程式和非過程式語言;按語言所含的成分:順序語言、并發(fā)語言和分布式語言根據(jù)基本機(jī)制可將程序設(shè)計語言分為過程式程序設(shè)計語言、函數(shù)式程序設(shè)計語言、邏輯程序設(shè)計語言和面向?qū)ο蟪绦蛟O(shè)計語言四類。

第23頁,共75頁,2023年,2月20日,星期日13.1.2程序設(shè)計語言的發(fā)展和分類程序設(shè)計語言的發(fā)展史第一代語言:機(jī)器語言和匯編語言第二代語言:早期的高級語言,如BASIC,F(xiàn)ORTRAN,COBOL等第三代語言:具有很強(qiáng)的數(shù)據(jù)結(jié)構(gòu)和過程描述能力,支持結(jié)構(gòu)化編程,如Pascal,Modula,C,Ada等第四代語言(4GL):這類語言出現(xiàn)于七十年代,其目的是為了提高程序開發(fā)速度,以及讓非專業(yè)用戶能直接編制計算機(jī)程序

第24頁,共75頁,2023年,2月20日,星期日13.1.2程序設(shè)計語言的發(fā)展和分類第四代語言(4GL)

4GL還局限在某些領(lǐng)域內(nèi),如數(shù)據(jù)庫查詢語言。

程序生成器代表了更為通用的一類4GL,程序生成器可以將更為自然的語言描述翻譯成第三代語言程序,進(jìn)而更好地消除設(shè)計和代碼之間的語義斷層。

第25頁,共75頁,2023年,2月20日,星期日13.1.2程序設(shè)計語言的發(fā)展和分類程序設(shè)計語言發(fā)展到今天,大致可劃分為四代。

第26頁,共75頁,2023年,2月20日,星期日13.1.2程序設(shè)計語言的發(fā)展和分類4GL的特點(diǎn)①4GL有很強(qiáng)的查詢、存儲、維護(hù)等數(shù)據(jù)管理機(jī)制,特別適用管理信息系統(tǒng)編程。②4GL提供一組高效的非過程化命令,組成語言的基本語句。用戶編程不必描述實現(xiàn)的細(xì)節(jié)。③4GL除含有程序控制邏輯和數(shù)據(jù)庫操作語句外,還包括生成和處理報表、表格、圖形,以及實現(xiàn)數(shù)據(jù)運(yùn)算和分析統(tǒng)計功能的各種語句,構(gòu)成了一個多功能、一體化的語言系統(tǒng),可適應(yīng)多種應(yīng)用開發(fā)的需要。④4GL的編譯器或解釋器一般都較大,速度慢,并盡可能容錯。

第27頁,共75頁,2023年,2月20日,星期日13.1.2程序設(shè)計語言的發(fā)展和分類第四代語言4GL的特點(diǎn)目前,第四代語言的種類繁多,尚無標(biāo)準(zhǔn),在語法和能力上有很大差異,其中一些支持非過程式編程,更多的是既含有非過程語句,也含有過程語句。典型的4GL有:數(shù)據(jù)庫查詢語言、報表生成程序、應(yīng)用生成程序、電子表格、圖形語言等。多數(shù)4GL是面向領(lǐng)域的,很少是通用的。

第28頁,共75頁,2023年,2月20日,星期日13.1.2程序設(shè)計語言的發(fā)展和分類此外,一些決策支持語言,原型語言,形式化規(guī)格說明語言,甚至個人計算機(jī)環(huán)境中的一些工具也被認(rèn)為屬于4GL的范疇。第三代語言的每一條語句一般被編譯成5-10條機(jī)器代碼指令。第四代語言(4GL,超高級語言)是非過程化語言。這類語言的一條語句一般被編譯成30-50條機(jī)器代碼

第29頁,共75頁,2023年,2月20日,星期日13.1.2程序設(shè)計語言的發(fā)展和分類面向?qū)ο笳Z言在過程型語言的基礎(chǔ)上發(fā)展而來的。一類是混合型面向?qū)ο笳Z言,如C++語言。C++語言是面向?qū)ο髾C(jī)制的C語言的一個超集。任何C程序不需改變就能把它們從結(jié)構(gòu)化范型平滑地過渡到面向?qū)ο蠓缎?。另一類是純面向?qū)ο笳Z言,如Java語言。Java語言是繼C++語言之后,當(dāng)今最流行的網(wǎng)絡(luò)編程語言。它的面向?qū)ο?、跨平臺和分布式等特點(diǎn),極大地拓展了應(yīng)用程序的內(nèi)涵和外延,給傳統(tǒng)編程帶來了一系列嶄新的概念,成為編程語言發(fā)展的潮流和方向。

第30頁,共75頁,2023年,2月20日,星期日13.1.2程序設(shè)計語言的發(fā)展和分類函數(shù)式程序設(shè)計語言一般包括數(shù)據(jù)對象定義和函數(shù)定義兩種基本機(jī)制。在其頗具代表性的兩種語言中,LISP采用λ—表達(dá)式的形式定義函數(shù),而ML采用遞歸方程描述函數(shù)。邏輯程序設(shè)計語言一般為某種符號邏輯系統(tǒng),其中基于Horn短句的一類語言(如Prolog)是迄今為止發(fā)展得較完善和實用的語言。它采用特定的邏輯語句形式描述問題域本身的知識和信息(稱為事實和規(guī)則)以及待解問題(稱為目標(biāo)),計算機(jī)采用某種推理規(guī)則(如歸結(jié)原理)模仿邏輯推理過程求解問題。

第31頁,共75頁,2023年,2月20日,星期日13.1.2程序設(shè)計語言的發(fā)展和分類自然語言最理想的是可以使用自然語言(如英語、法語或漢語),使計算機(jī)能理解并立即執(zhí)行請求。但迄今為止,自然語言理解仍然是計算機(jī)科學(xué)研究中的一個難點(diǎn),盡管在實驗室的研究中取得了一定的成果,但在現(xiàn)實中的應(yīng)用仍然是相當(dāng)有限的。

第32頁,共75頁,2023年,2月20日,星期日13.1.3程序設(shè)計語言的選擇標(biāo)準(zhǔn)選擇語言時要考慮的因素:

1)項目的應(yīng)用領(lǐng)域

2)項目中算法和計算的復(fù)雜性

3)項目中數(shù)據(jù)結(jié)構(gòu)的復(fù)雜性

4)用戶的性能需求

5)軟件運(yùn)行的環(huán)境

6)軟件開發(fā)人員開發(fā)水平。

7)可用的編譯器和交叉編譯器。

第33頁,共75頁,2023年,2月20日,星期日13.1.3程序設(shè)計語言的選擇項目所屬的應(yīng)用領(lǐng)域常常是首要的標(biāo)準(zhǔn)COBOL適用于商業(yè)領(lǐng)域FORTRAN適用于工程和科學(xué)計算領(lǐng)域Prolog、Lisp適用于人工智能領(lǐng)域Smalltalk、C++適用于OO系統(tǒng)的開發(fā)有些語言適用于多個應(yīng)用領(lǐng)域,如C對實時系統(tǒng),則實時處理能力就成為首要問題。若有多種語言都適合于某項目的開發(fā)時,也可考慮選擇開發(fā)人員比較熟悉的語言

第34頁,共75頁,2023年,2月20日,星期日13.1.3程序設(shè)計語言的選擇選擇高級語言還是低級語言使用低級語言的情況:對運(yùn)行時間和存儲空間有過高要求的項目,如電子筆記本中的軟件在某些不能提供高級語言編譯程序的計算機(jī)上開發(fā)程序,如單片機(jī)上的軟件大型系統(tǒng)中對系統(tǒng)執(zhí)行時間起關(guān)鍵作用的模塊

第35頁,共75頁,2023年,2月20日,星期日第13章程序設(shè)計語言和編碼13.1程序設(shè)計語言程序設(shè)計語言的特性程序設(shè)計語言的發(fā)展和分類程序設(shè)計語言的選擇標(biāo)準(zhǔn)13.2編程質(zhì)量與程序設(shè)計語言13.3編程標(biāo)準(zhǔn)和原則13.4編程/編碼風(fēng)格13.5程序設(shè)計支持環(huán)境(PSE)附錄1:編碼風(fēng)格的規(guī)則和體現(xiàn)

第36頁,共75頁,2023年,2月20日,星期日13.2編程質(zhì)量與程序設(shè)計語言程序的可靠性、可維護(hù)性和效率通常由程序設(shè)計語言、源代碼的質(zhì)量、和語言的實現(xiàn)機(jī)制決定的。13.2.1程序設(shè)計語言與可靠性

程序設(shè)計語言的可靠性是指程序設(shè)計語言本身不出錯或?qū)﹀e誤的糾正能力。如:JAVA由于其拋棄了指針和動態(tài)存儲分配等易于出錯的語言特性。從而具有較高的可靠性。

第37頁,共75頁,2023年,2月20日,星期日13.2.2程序設(shè)計語言與可維護(hù)性程序設(shè)計語言的可維護(hù)性通常指這種語言編寫的程序被理解,被修改及調(diào)整和改進(jìn)的難易程度。程序設(shè)計語言的可維護(hù)性一般由下面幾個因素決定:①程序設(shè)計語言的一致性和緊致性一致性刻畫了語言標(biāo)記的語義單義性,因此一致性好的語言的可維護(hù)性要好于一致性差的語言。②程序設(shè)計語言的語法規(guī)則語法規(guī)則的嚴(yán)格程度也影響語言的可維護(hù)性和可讀性,語法要求嚴(yán)格的語言要比語法自由的語言的可維護(hù)性差些。因為修改和理解語法嚴(yán)格的語言要困難些。比如FORTRAN和Perl語言,其語法要求很嚴(yán)格。因此其可維護(hù)性與C/C++等語法較自由的語言相比要差些。

第38頁,共75頁,2023年,2月20日,星期日13.2.3程序設(shè)計語言與效率不同程序設(shè)計語言在程序的效率上的差異很大。程序設(shè)計語言的效率由下面因素決定:①程序設(shè)計語言的實現(xiàn)機(jī)制;解釋性程序(如解釋BASIC)和編譯成中間語言然后又解釋執(zhí)行的語言(如JAVA)的效率一般要遠(yuǎn)遠(yuǎn)低于編譯語言。②程序語言對系統(tǒng)底層的訪問和控制能力;設(shè)計良好的低級語言程序效率最高。③編譯器的效率;

第39頁,共75頁,2023年,2月20日,星期日第13章程序設(shè)計語言和編碼13.1程序設(shè)計語言程序設(shè)計語言的特性程序設(shè)計語言的發(fā)展和分類程序設(shè)計語言的選擇標(biāo)準(zhǔn)13.2編程質(zhì)量與程序設(shè)計語言13.3編程標(biāo)準(zhǔn)和原則13.4編程/編碼風(fēng)格13.5程序設(shè)計支持環(huán)境(PSE)附錄1:編碼風(fēng)格的規(guī)則和體現(xiàn)

第40頁,共75頁,2023年,2月20日,星期日13.3編程標(biāo)準(zhǔn)和原則編碼的依據(jù)是詳細(xì)設(shè)計說明書。編碼的任務(wù)就是按照詳細(xì)設(shè)計說明的要求寫出滿足要求的代碼。設(shè)計階段的成果基本上決定了系統(tǒng)的可修改性和可維護(hù)性。在編碼階段,遵循下述原則,將有助于編寫清晰、緊湊、高效的程序。從而進(jìn)一步提高程序的可修改性、可維護(hù)性和可測試性。

第41頁,共75頁,2023年,2月20日,星期日13.3編程標(biāo)準(zhǔn)和原則1)編寫易于修改和維護(hù)的代碼編碼階段,在設(shè)計基礎(chǔ)上對程序進(jìn)行進(jìn)一步的數(shù)據(jù)和操作的分離有利于代碼和數(shù)據(jù)的單獨(dú)改變。

2)編寫易于測試的代碼在編碼階段對代碼的可測試性進(jìn)行考慮可以減少測試階段的工作量。以條件編譯和注釋的方法融入源代碼中,是一種有效的增加代碼可測試性的手段。

第42頁,共75頁,2023年,2月20日,星期日13.3編程標(biāo)準(zhǔn)和原則3)編寫詳細(xì)的程序文檔程序文檔一般指以注釋的形式嵌入程序中的代碼描述。程序文檔應(yīng)該與程序保持高度一致。程序文檔應(yīng)該包括下列內(nèi)容①代碼的功能;②代碼的完成者;③代碼在整個軟件系統(tǒng)中的位置;④代碼編制、復(fù)審時間;⑤保留代碼的原因;⑥代碼中如何使用數(shù)據(jù)結(jié)構(gòu)和算法。

第43頁,共75頁,2023年,2月20日,星期日13.3編程標(biāo)準(zhǔn)和原則4)編程中采用統(tǒng)一的標(biāo)準(zhǔn)和約定,降低程序的復(fù)雜性軟件組織通常會制定一份“編碼規(guī)范”,程序員在編寫代碼時。必須嚴(yán)格按照“編碼規(guī)范”編寫代碼。表13-1是軟件組織“編碼規(guī)范”的通用格式和內(nèi)容。

第44頁,共75頁,2023年,2月20日,星期日表13-1編碼規(guī)范規(guī)范項規(guī)范內(nèi)容1排版排版格式,如縮進(jìn)、塊語句、分行等2注釋規(guī)范注釋的格式3標(biāo)識符命名規(guī)范標(biāo)識符的命名規(guī)則4可讀性為提高可讀性所作的規(guī)范,如禁止使用技巧性高的語句5變量、結(jié)構(gòu)規(guī)范變量和結(jié)構(gòu)的定義,如禁止局部與全局變量同名等6函數(shù)、過程規(guī)范函數(shù)的定義,如“不要設(shè)計多用途面面俱到的函數(shù)”7可測性為提高可測性的規(guī)范,如“用斷言確認(rèn)函數(shù)的參數(shù)”等8程序效率為程序效率所作的規(guī)范,如“循環(huán)體內(nèi)工作量最小化”9質(zhì)量保證為提高軟件質(zhì)量所作的規(guī)范,如“防止內(nèi)存操作越界”

第45頁,共75頁,2023年,2月20日,星期日13.3編程標(biāo)準(zhǔn)和原則5)分離功能獨(dú)立的代碼塊形成新的模塊將功能獨(dú)立的代碼塊獨(dú)立出來形成新的模塊,增加模塊的內(nèi)聚度,有利于代碼的重用和可修改性。

第46頁,共75頁,2023年,2月20日,星期日第13章程序設(shè)計語言和編碼13.1程序設(shè)計語言程序設(shè)計語言的特性程序設(shè)計語言的發(fā)展和分類程序設(shè)計語言的選擇標(biāo)準(zhǔn)13.2編程質(zhì)量與程序設(shè)計語言13.3編程標(biāo)準(zhǔn)和原則13.4編程/編碼風(fēng)格13.5程序設(shè)計支持環(huán)境(PSE)附錄1:編碼風(fēng)格的規(guī)則和體現(xiàn)

第47頁,共75頁,2023年,2月20日,星期日13.4編碼風(fēng)格編碼風(fēng)格(CodingStyle),又稱程序設(shè)計風(fēng)格,是程序設(shè)計者在創(chuàng)作中喜歡或習(xí)慣使用的表達(dá)自己作品的方式。從軟件工程學(xué)的角度,良好的編碼風(fēng)格主要體現(xiàn)在程序代碼邏輯清晰,易讀、易理解、易維護(hù),能高效利用系統(tǒng)資源等各個方面。編碼風(fēng)格強(qiáng)調(diào)“清晰第一”。清晰和效率往往是矛盾的。強(qiáng)調(diào)“清晰第一”,并非不要效率,而是在清晰的前提下求取效率。

第48頁,共75頁,2023年,2月20日,星期日13.4編程風(fēng)格不同的程序員可能具有不同的編程風(fēng)格,有時候很難說哪種風(fēng)格好,哪種風(fēng)格不好,比如在分支語句之后的語句塊,一些程序員可能習(xí)慣這樣:

if(a>b){.......}而另外的程序員喜歡這樣:

if(a>b){......}

第49頁,共75頁,2023年,2月20日,星期日13.4編程風(fēng)格一般的軟件組織允許程序員在不影響代碼的可讀性、可修改性、可測試性、可維護(hù)性的基礎(chǔ)上使用自己的風(fēng)格編寫程序。但是有些規(guī)則則是所有程序員必須遵守的。

第50頁,共75頁,2023年,2月20日,星期日優(yōu)良編碼風(fēng)格的規(guī)則(或稱優(yōu)良編碼風(fēng)格的內(nèi)容)直接的說,優(yōu)良編碼風(fēng)格就是要按照以下規(guī)則進(jìn)行編程:節(jié)儉化模塊化簡單化結(jié)構(gòu)化文檔化格式化

第51頁,共75頁,2023年,2月20日,星期日好的編程風(fēng)格應(yīng)遵循的規(guī)則1)節(jié)簡化(economy)①不使用不必要的變量和函數(shù)②避免變量重名,變量重名可導(dǎo)致很難被發(fā)現(xiàn)的錯誤。③盡量減小代碼量。④盡量減少代碼的執(zhí)行時間,提高執(zhí)行效率。⑤避免功能冗余的模塊。⑥盡量不使用全局變量。

第52頁,共75頁,2023年,2月20日,星期日好的編程風(fēng)格應(yīng)遵循的規(guī)則2)模塊化(Modularity)①確保物理和邏輯功能密切相關(guān)。②限定一個模塊完成一個獨(dú)立的功能,提高模塊的內(nèi)聚度。③檢查代碼的重復(fù)率,重復(fù)多的代碼,要抽出來作為一個單獨(dú)的模塊。

第53頁,共75頁,2023年,2月20日,星期日好的編程風(fēng)格應(yīng)遵循的規(guī)則3)簡單化(Simplicity)①采用直接了當(dāng)?shù)乃惴?,避免使用技巧性高和難懂的代碼。②使用簡單的數(shù)據(jù)結(jié)構(gòu),避免使用多維數(shù)組、指針和復(fù)雜的表。③注意對象命名的一致性。④以手工的方式簡化算術(shù)和邏輯表達(dá)式。

第54頁,共75頁,2023年,2月20日,星期日好的編程風(fēng)格應(yīng)遵循的規(guī)則4)結(jié)構(gòu)化①按標(biāo)準(zhǔn)化的次序說明數(shù)據(jù);②按字母順序說明對象名③使用讀者明了的結(jié)構(gòu)化程序部件;④采用直截了當(dāng)?shù)乃惴?;⑤根?jù)應(yīng)用背景排列程序各個部分;

第55頁,共75頁,2023年,2月20日,星期日好的編程風(fēng)格應(yīng)遵循的規(guī)則4)結(jié)構(gòu)化(structure)⑥不隨意為效率而犧牲程序的清晰度和可讀性;⑦讓機(jī)器多做煩瑣的工作,如重復(fù)、庫函數(shù);⑧用公共函數(shù)調(diào)用代替重復(fù)出現(xiàn)的表達(dá)式;⑨避免循環(huán)、分支的嵌套層數(shù)過高;⑩單入口單出口。

第56頁,共75頁,2023年,2月20日,星期日好的編程風(fēng)格應(yīng)遵循的規(guī)則5)文檔化(documentation)①有效、適當(dāng)?shù)厥褂米⑨?。②協(xié)調(diào)使用程序塊注釋和程序行注釋。③保持文檔和程序的同步。

第57頁,共75頁,2023年,2月20日,星期日好的編程風(fēng)格應(yīng)遵循的規(guī)則6)格式化(layout)①始終采用統(tǒng)一縮進(jìn)規(guī)則;②適當(dāng)插入括號表明運(yùn)算次序、排除二義性;③有效地使用空格符以區(qū)別程序的不同意群。

第58頁,共75頁,2023年,2月20日,星期日對效率的追求明確以下幾點(diǎn):效率是一個性能要求,目標(biāo)在需求分析時給出。追求建立在不損害程序可讀性或可靠性基礎(chǔ)上,要先使程序正確、清晰,再提高程序效率。別貪圖效率上的小利,而破壞程序的清晰性。讓編譯程序去作簡單的優(yōu)化。提高程序效率的根本途徑在于:選擇良好的設(shè)計方法、良好的數(shù)據(jù)結(jié)構(gòu)與算法,而不是靠編程時對程序語句做調(diào)整。13.4編碼風(fēng)格:效率

第59頁,共75頁,2023年,2月20日,星期日編碼風(fēng)格:重用性、可擴(kuò)充性、健壯性重用性:提高代碼中方法的內(nèi)聚,減小方法的規(guī)模,保持方法的一致性,把策略與實現(xiàn)分開,盡量不使用全局信息等等。可擴(kuò)充性:提高可重用性的同時也能提高程序的可擴(kuò)充性,還要考慮模塊的耦合度

健壯性:應(yīng)該預(yù)防用戶的操作錯誤,檢查參數(shù)的合法性,等等,提高程序從錯誤中恢復(fù)的能力

第60頁,共75頁,2023年,2月20日,星期日第13章程序設(shè)計語言和編碼13.1程序設(shè)計語言程序設(shè)計語言的特性程序設(shè)計語言的發(fā)展和分類程序設(shè)計語言的選擇標(biāo)準(zhǔn)13.2編程質(zhì)量與程序設(shè)計語言13.3編程標(biāo)準(zhǔn)和原則13.4編程/編碼風(fēng)格13.5程序設(shè)計支持環(huán)境(PSE)附錄1:編碼風(fēng)格的規(guī)則和體現(xiàn)

第61頁,共75頁,2023年,2月20日,星期日13.5程序設(shè)計支持環(huán)境(PSE)PSE,programmingsupportenvironment

即編程所使用的集成開發(fā)環(huán)境:

IDE,integrateddevelopmentenvironmentPSE完成程序編輯、編譯、調(diào)試、配置管理、項目管理等一組任務(wù)。

第62頁,共75頁,2023年,2月20日,星期日13.5程序設(shè)計支持環(huán)境(PSE)好的PSE應(yīng)該具有如下的特性:1)通用性。適用于不

溫馨提示

  • 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

提交評論