freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

編程規(guī)范和范例-經(jīng)營管理-資料下載頁

2025-08-05 18:08本頁面

【導讀】¹1-1:程序塊要采用縮進風格編寫,縮進的空格數(shù)為4個。¹1-2:相對獨立的程序塊之間、變量說明之后必須加空行。¹1-3:較長的語句要分成多行書寫,長表達式要在低優(yōu)先級操作符處劃分新行,操作符放在新行之首,劃分出的新行要進行適當?shù)目s進,使排版整齊,語句可讀。優(yōu)先級操作符處劃分新行,操作符放在新行之首。¹1-6:不允許把多個短語句寫在一行中,即一行只寫一條語句。¹1-7:if、for、do、while、case、switch、default等語句自占一行,且if、for、do、while等語句的執(zhí)行語句部分無論多少都要加括號{}。因此使用BC合入的版本大多會將縮進變亂。語句下的情況處理語句也要遵從語句縮進要求。列,同時與引用它們的語句左對齊。不必加空格,因為在C/C++語言中括號已經(jīng)是最清晰的標志了。在長語句中,如果需要加的空格非常多,那么應(yīng)該保持整體清晰,而在局部不加空格。操作符留空格時不要連續(xù)留兩個以上空格。

  

【正文】 int integer_sum( unsigned int base ) { unsigned int index。 static unsigned int sum = 0。 // 注意,是 static類型的。 // 若改為 auto類型,則函數(shù)即變?yōu)榭深A測。 for (index = 1。 index = base。 index++) { sum += index。 } return sum。 } 189。67:盡量不要編寫依賴于其他函數(shù)內(nèi)部實現(xiàn)的函數(shù)。 說明:此條為函數(shù)獨立性的基本要求。由于目前大部分高級語言都是結(jié)構(gòu)化的,所以通過具體語言的語法要求與編譯器功能,基本就可以防止這種情況發(fā)生。但在匯編語言中,由于其靈活性,很可能使函數(shù)出現(xiàn)這種情況。 示例:如下是在 DOS下 TASM的匯編程序例子。過程 Print_Msg的實現(xiàn)依賴于Input_Msg的具體實現(xiàn),這種程序 是非結(jié)構(gòu)化的,難以維護、修改。 ... // 程序代碼 proc Print_Msg // 過程(函數(shù)) Print_Msg ... // 程序代碼 jmp LABEL ... // 程序代碼 軟件編程規(guī)范總則 6 函數(shù)、過程 僅供內(nèi)部使用 33 endp proc Input_Msg // 過程(函數(shù)) Input_Msg ... // 程序代碼 LABEL: ... // 程序代碼 endp 189。68:避免設(shè)計多參數(shù)函數(shù),不使用的參數(shù)從接口中去掉。 說明:目的減少函數(shù)間接口的復雜度。 189。69:非調(diào)度函數(shù)應(yīng)減少 或防止控制參數(shù),盡量只使用數(shù)據(jù)參數(shù)。 說明:本建議目的是防止函數(shù)間的控制耦合。調(diào)度函數(shù)是指根據(jù)輸入的消息類型或控制命令,來啟動相應(yīng)的功能實體(即函數(shù)或過程),而本身并不完成具體功能。控制參數(shù)是指改變函數(shù)功能行為的參數(shù),即函數(shù)要根據(jù)此參數(shù)來決定具體怎樣工作。非調(diào)度函數(shù)的控制參數(shù)增加了函數(shù)間的控制耦合,很可能使函數(shù)間的耦合度增大,并使函數(shù)的功能不唯一。 示例:如下函數(shù)構(gòu)造不太合理。 int add_sub( int a, int b, unsigned char add_sub_flg ) { if (add_sub_flg == INTEGER_ADD) { return (a + b)。 } else { return (a b)。 } } 不如分為如下兩個函數(shù)清晰。 int add( int a, int b ) { return (a + b)。 } 軟件編程規(guī)范總則 6 函數(shù)、過程 僅供內(nèi)部使用 34 int sub( int a, int b ) { return (a b)。 } 189。610:檢查函數(shù)所有參數(shù)輸入的有效性。 189。611:檢查函數(shù)所有 非參數(shù)輸入的有效性,如數(shù)據(jù)文件、公共變量等。 說明:函數(shù)的輸入主要有兩種:一種是參數(shù)輸入;另一種是全局變量、數(shù)據(jù)文件的輸入,即非參數(shù)輸入。函數(shù)在使用輸入之前,應(yīng)進行必要的檢查。 189。612:函數(shù)名應(yīng)準確描述函數(shù)的功能。 189。613:使用動賓詞組為執(zhí)行某操作的函數(shù)命名。如果是 OOP方法,可以只有動詞(名詞是對象本身)。 示例:參照如下方式命名函數(shù)。 void print_record( unsigned int rec_ind ) 。 int input_record( void ) 。 unsigned char get_current_color( void ) 。 建議 614:避免使用無意義或含義不清的動詞為函數(shù)命名。 說明:避免用含義不清的動詞如 process、 handle等為函數(shù)命名,因為這些動詞并沒有說明要具體做什么。 建議 615:函數(shù)的返回值要清楚、明了,讓使用者不容易忽視錯誤情況。 說明:函數(shù)的每種出錯返回值的意義要清晰、明了、準確,防止使用者誤用、理解錯誤或忽視錯誤返回碼。 189。616:除非必要,最好不要把與函數(shù)返回值類型不同的變量,以編譯系統(tǒng)默認的轉(zhuǎn)換方式或強制的轉(zhuǎn)換方式作為返回值返回。 189。617:讓函數(shù)在調(diào)用點顯得易懂、容易理解。 189。618:在調(diào)用函數(shù)填寫參數(shù)時,應(yīng)盡量減少沒有必要的默認數(shù)據(jù)類型轉(zhuǎn)換或強制數(shù)據(jù)類型轉(zhuǎn)換。 說明:因為數(shù)據(jù)類型轉(zhuǎn)換或多或少存在危險。 軟件編程規(guī)范總則 6 函數(shù)、過程 僅供內(nèi)部使用 35 189。619:避免函數(shù)中不必要語句,防止程序中的垃圾代碼。 說明:程序中的垃圾代碼不僅占用額外的空間,而且還常常影響程序的功能與性能,很可能給程序的測試、維護等造成不必要的麻煩。 189。620:防止把沒有關(guān)聯(lián)的語句放到一個函數(shù)中。 說明:防止函數(shù)或過程內(nèi)出現(xiàn)隨機內(nèi)聚。隨機內(nèi)聚是指將沒有關(guān)聯(lián)或關(guān)聯(lián)很弱的語句放到同一個函數(shù)或過程中。隨機內(nèi)聚給函數(shù) 或過程的維護、測試及以后的升級等造成了不便,同時也使函數(shù)或過程的功能不明確。使用隨機內(nèi)聚函數(shù),常常容易出現(xiàn)在一種應(yīng)用場合需要改進此函數(shù),而另一種應(yīng)用場合又不允許這種改進,從而陷入困境。 在編程時,經(jīng)常遇到在不同函數(shù)中使用相同的代碼,許多開發(fā)人員都愿把這些代碼提出來,并構(gòu)成一個新函數(shù)。若這些代碼關(guān)聯(lián)較大并且是完成一個功能的,那么這種構(gòu)造是合理的,否則這種構(gòu)造將產(chǎn)生隨機內(nèi)聚的函數(shù)。 示例:如下函數(shù)就是一種隨機內(nèi)聚。 void Init_Var( void ) { = 0。 = 0。 /* 初始化矩形的長與寬 */ = 10。 = 10。 /* 初始化“點”的坐標 */ } 矩形的長、寬與點的坐標基本沒有任何關(guān)系,故以上函數(shù)是隨機內(nèi)聚。 應(yīng)如下分為兩個函數(shù): void Init_Rect( void ) { = 0。 = 0。 /* 初始化矩形的長與寬 */ } void Init_Point( void ) { = 10。 = 10。 /* 初始化“點”的坐標 */ 軟件編程規(guī)范總則 6 函數(shù)、過程 僅供內(nèi)部使用 36 } 189。621:如果多段代碼重復做同一件事情,那么在函數(shù)的劃分上可能存在問題。 說明:若此段代碼各語句之間有實質(zhì)性關(guān)聯(lián)并且是完成同一件功能的,那么可考慮把此段代碼構(gòu)造成一個新的函數(shù)。 189。622:功能不明確較小的函數(shù),特別是僅有一個上級函數(shù)調(diào)用它時,應(yīng)考慮把它合并到上級函數(shù)中,而不必單獨存在。 說明:模塊中函數(shù)劃分的過多,一般會使函數(shù)間的接口變得復雜。所以過小的函數(shù),特別是扇入很低的或功能不明確的函數(shù),不值得單獨存在。 189。623:設(shè)計高扇入、合理扇出(小于 7)的函數(shù)。 說明:扇出是指一個函數(shù)直接調(diào)用(控制)其它函數(shù)的數(shù)目,而扇入是指有多少上級函數(shù)調(diào)用它。 扇出過大,表明函數(shù)過分復雜,需要控制和協(xié)調(diào)過多的下級函數(shù);而扇出過小,如總是 1,表明函數(shù)的調(diào)用層次可能過多,這樣不利程序閱讀和函數(shù)結(jié)構(gòu)的分析,并且程序運行時會對系統(tǒng)資源如堆??臻g等造成壓力。函數(shù)較合理的扇出(調(diào)度函數(shù)除外)通常是 35。扇出太大,一般是由于缺乏中間層次,可適當增加中間層次的函數(shù)。扇出太小,可把下級函數(shù)進一步分解多個函數(shù),或合并到上級函數(shù)中。當然分解或合并 函數(shù)時,不能改變要實現(xiàn)的功能,也不能違背函數(shù)間的獨立性。 扇入越大,表明使用此函數(shù)的上級函數(shù)越多,這樣的函數(shù)使用效率高,但不能違背函數(shù)間的獨立性而單純地追求高扇入。公共模塊中的函數(shù)及底層函數(shù)應(yīng)該有較高的扇入。 較良好的軟件結(jié)構(gòu)通常是頂層函數(shù)的扇出較高,中層函數(shù)的扇出較少,而底層函數(shù)則扇入到公共模塊中。 189。624:減少函數(shù)本身或函數(shù)間的遞歸調(diào)用。 說明:遞歸調(diào)用特別是函數(shù)間的遞歸調(diào)用(如 ABCA),影響程序的可理解性;遞歸調(diào)用一般都占用較多的系統(tǒng)資源(如??臻g);遞歸調(diào)用對程序的測試有一定影響。故除非為某些算法或功能的實現(xiàn)方便,應(yīng)減少沒必要的遞歸調(diào)用。 189。625:仔細分析模塊的功能及性能需求,并進一步細分,同時若有必要畫出有關(guān)數(shù)據(jù)流圖,據(jù)此來進行模塊的函數(shù)劃分與組織。 說明:函數(shù)的劃分與組織是模塊的實現(xiàn)過程中很關(guān)鍵的步驟,如何劃分出合理的函數(shù)結(jié)構(gòu),關(guān)系到模塊的最終效率和可維護性、可測性等。根據(jù)模塊的功能圖或 /及數(shù)據(jù)流圖映射出 軟件編程規(guī)范總則 6 函數(shù)、過程 僅供內(nèi)部使用 37 函數(shù)結(jié)構(gòu)是常用方法之一。 189。626:改進模塊中函數(shù)的結(jié)構(gòu),降低函數(shù)間的耦合度,并提高函數(shù)的獨立性以及代碼可讀性、效率和可維護性。優(yōu)化函數(shù)結(jié)構(gòu)時,要遵守以下原則: ( 1)不能影響模 塊功能的實現(xiàn)。 ( 2)仔細考查模塊或函數(shù)出錯處理及模塊的性能要求并進行完善。 ( 3)通過分解或合并函數(shù)來改進軟件結(jié)構(gòu)。 ( 4)考查函數(shù)的規(guī)模,過大的要進行分解。 ( 5)降低函數(shù)間接口的復雜度。 ( 6)不同層次的函數(shù)調(diào)用要有較合理的扇入、扇出。 ( 7)函數(shù)功能應(yīng)可預測。 ( 8)提高函數(shù)內(nèi)聚。(單一功能的函數(shù)內(nèi)聚最高) 說明:對初步劃分后的函數(shù)結(jié)構(gòu)應(yīng)進行改進、優(yōu)化,使之更為合理。 189。627:在多任務(wù)操作系統(tǒng)的環(huán)境下編程,要注意函數(shù)可重入性的構(gòu)造。 說明:可重入性是指函數(shù)可以被多個任務(wù)進程調(diào)用。在多任務(wù)操作系統(tǒng)中 ,函數(shù)是否具有可重入性是非常重要的,因為這是多個進程可以共用此函數(shù)的必要條件。另外,編譯器是否提供可重入函數(shù)庫,與它所服務(wù)的操作系統(tǒng)有關(guān),只有操作系統(tǒng)是多任務(wù)時,編譯器才有可能提供可重入函數(shù)庫。如 DOS下 BC 和 MSC等就不具備可重入函數(shù)庫,因為 DOS是單用戶單任務(wù)操作系統(tǒng)。 189。628:避免使用 BOOL參數(shù)。 說明:原因有二,其一是 BOOL參數(shù)值無意義, TURE/FALSE的含義是非常模糊的,在調(diào)用時很難知道該參數(shù)到底傳達的是什么意思;其二是 BOOL參數(shù)值不利于擴充。還有 NULL也是一個無意義的單詞。 189。629: 對于提供了返回值的函數(shù),在引用時最好使用其返回值。 189。630:當一個過程(函數(shù))中對較長變量(一般是結(jié)構(gòu)的成員)有較多引用時,可以用一個意義相當?shù)暮甏妗? 說明:這樣可以增加編程效率和程序的可讀性。 示例:在某過程中較多引用 TheReceiveBuffer[FirstSocket].byDataPtr, 則可以通過以下宏定義來代替: define pSOCKDATA TheReceiveBuffer[FirstScoket].byDataPtr 軟件編程規(guī)范總則 7 可測性 僅供內(nèi)部使用 38 7 可測性 185。71:在同一項目組或產(chǎn)品組內(nèi),要有 一套統(tǒng)一的為集成測試與系統(tǒng)聯(lián)調(diào)準備的調(diào)測開關(guān)及相應(yīng)打印函數(shù),并且要有詳細的說明。 說明:本規(guī)則是針對項目組或產(chǎn)品組的。 185。72:在同一項目組或產(chǎn)品組內(nèi),調(diào)測打印出的信息串的格式要有統(tǒng)一的形式。信息串中至少要有所在模塊名(或源文件名)及行號。 說明:統(tǒng)一的調(diào)測信息格式便于集成測試。 185。73:編程的同時要為單元測試選擇恰當?shù)臏y試點,并仔細構(gòu)造測試代碼、測試用例,同時給出明確的注釋說明。測試代碼部分應(yīng)作為(模塊中的)一個子模塊,以方便測試代碼在模塊中的安裝與拆卸(通過調(diào)測開關(guān))。 說明:為單元測試而準備。 185。74:在進行集成測試 /系統(tǒng)聯(lián)調(diào)之前,要構(gòu)造好測試環(huán)境、測試項目及測試用例,同時仔細分析并優(yōu)化測試用例,以提高測試效率。 說明:好的測試用例應(yīng)盡可能模擬出程序所遇到的邊界值、各種復雜環(huán)境及一些極端情況等。 185。75:使用斷言來發(fā)現(xiàn)軟件問題,提高代碼可測性。 說明:斷言是對某種假設(shè)條件進行檢查(可理解為若條件成立則無動作,否則應(yīng)報告),它可以快速發(fā)現(xiàn)并定位軟件問題,同時對系統(tǒng)錯誤進行自動報警。斷言可以對在系統(tǒng)中隱藏很深,用其它手段極難發(fā)現(xiàn)的問題進行定位,從而縮短軟件問題定位時間,提高系統(tǒng)的可測性。實際應(yīng)用時,可根據(jù)具 體情況靈活地設(shè)計斷言。 示例:下面是 C語言中的一個斷言,用宏來設(shè)計的。(其中 NULL為 0L) ifdef _EXAM_ASSERT_TEST_ // 若使用斷言測試 void exam_assert( char * file_name, unsigned int line_no ) { printf( \n[EXAM]Assert failed: %s, line %u\n, file_name, line_no )。 abort( )。 軟件編程規(guī)范總則 7 可測性 僅供內(nèi)部使用 39 } define EXAM_ASSERT( condition ) if (condition) // 若條件成立,則無動作 NULL。 else // 否則報告 exam_assert( __FILE__, __LINE__ )
點擊復制文檔內(nèi)容
環(huán)評公示相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1