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

正文內(nèi)容

華為公司程序培訓(xùn)教材-資料下載頁

2025-07-09 12:57本頁面
  

【正文】 it_Point( void ){ = 10。 = 10。 /* 初始化“點(diǎn)”的坐標(biāo) */}189。 621:如果多段代碼重復(fù)做同一件事情,那么在函數(shù)的劃分上可能存在問題。說明:若此段代碼各語句之間有實(shí)質(zhì)性關(guān)聯(lián)并且是完成同一件功能的,那么可考慮把此段代碼構(gòu)造成一個新的函數(shù)。189。 622:功能不明確較小的函數(shù),特別是僅有一個上級函數(shù)調(diào)用它時,應(yīng)考慮把它合并到上級函數(shù)中,而不必單獨(dú)存在。說明:模塊中函數(shù)劃分的過多,一般會使函數(shù)間的接口變得復(fù)雜。所以過小的函數(shù),特別是扇入很低的或功能不明確的函數(shù),不值得單獨(dú)存在。189。 623:設(shè)計(jì)高扇入、合理扇出(小于7)的函數(shù)。說明:扇出是指一個函數(shù)直接調(diào)用(控制)其它函數(shù)的數(shù)目,而扇入是指有多少上級函數(shù)調(diào)用它。扇出過大,表明函數(shù)過分復(fù)雜,需要控制和協(xié)調(diào)過多的下級函數(shù);而扇出過小,如總是1,表明函數(shù)的調(diào)用層次可能過多,這樣不利程序閱讀和函數(shù)結(jié)構(gòu)的分析,并且程序運(yùn)行時會對系統(tǒng)資源如堆??臻g等造成壓力。函數(shù)較合理的扇出(調(diào)度函數(shù)除外)通常是35。扇出太大,一般是由于缺乏中間層次,可適當(dāng)增加中間層次的函數(shù)。扇出太小,可把下級函數(shù)進(jìn)一步分解多個函數(shù),或合并到上級函數(shù)中。當(dāng)然分解或合并函數(shù)時,不能改變要實(shí)現(xiàn)的功能,也不能違背函數(shù)間的獨(dú)立性。扇入越大,表明使用此函數(shù)的上級函數(shù)越多,這樣的函數(shù)使用效率高,但不能違背函數(shù)間的獨(dú)立性而單純地追求高扇入。公共模塊中的函數(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)用對程序的測試有一定影響。故除非為某些算法或功能的實(shí)現(xiàn)方便,應(yīng)減少沒必要的遞歸調(diào)用。189。 625:仔細(xì)分析模塊的功能及性能需求,并進(jìn)一步細(xì)分,同時若有必要畫出有關(guān)數(shù)據(jù)流圖,據(jù)此來進(jìn)行模塊的函數(shù)劃分與組織。說明:函數(shù)的劃分與組織是模塊的實(shí)現(xiàn)過程中很關(guān)鍵的步驟,如何劃分出合理的函數(shù)結(jié)構(gòu),關(guān)系到模塊的最終效率和可維護(hù)性、可測性等。根據(jù)模塊的功能圖或/及數(shù)據(jù)流圖映射出函數(shù)結(jié)構(gòu)是常用方法之一。189。 626:改進(jìn)模塊中函數(shù)的結(jié)構(gòu),降低函數(shù)間的耦合度,并提高函數(shù)的獨(dú)立性以及代碼可讀性、效率和可維護(hù)性。優(yōu)化函數(shù)結(jié)構(gòu)時,要遵守以下原則:(1)不能影響模塊功能的實(shí)現(xiàn)。(2)仔細(xì)考查模塊或函數(shù)出錯處理及模塊的性能要求并進(jìn)行完善。(3)通過分解或合并函數(shù)來改進(jìn)軟件結(jié)構(gòu)。(4)考查函數(shù)的規(guī)模,過大的要進(jìn)行分解。(5)降低函數(shù)間接口的復(fù)雜度。(6)不同層次的函數(shù)調(diào)用要有較合理的扇入、扇出。(7)函數(shù)功能應(yīng)可預(yù)測。(8)提高函數(shù)內(nèi)聚。(單一功能的函數(shù)內(nèi)聚最高)說明:對初步劃分后的函數(shù)結(jié)構(gòu)應(yīng)進(jìn)行改進(jìn)、優(yōu)化,使之更為合理。189。 627:在多任務(wù)操作系統(tǒng)的環(huán)境下編程,要注意函數(shù)可重入性的構(gòu)造。說明:可重入性是指函數(shù)可以被多個任務(wù)進(jìn)程調(diào)用。在多任務(wù)操作系統(tǒng)中,函數(shù)是否具有可重入性是非常重要的,因?yàn)檫@是多個進(jìn)程可以共用此函數(shù)的必要條件。另外,編譯器是否提供可重入函數(shù)庫,與它所服務(wù)的操作系統(tǒng)有關(guān),只有操作系統(tǒng)是多任務(wù)時,編譯器才有可能提供可重入函數(shù)庫。如DOS下BC和MSC等就不具備可重入函數(shù)庫,因?yàn)镈OS是單用戶單任務(wù)操作系統(tǒng)。189。 628:避免使用BOOL參數(shù)。說明:原因有二,其一是BOOL參數(shù)值無意義,TURE/FALSE的含義是非常模糊的,在調(diào)用時很難知道該參數(shù)到底傳達(dá)的是什么意思;其二是BOOL參數(shù)值不利于擴(kuò)充。還有NULL也是一個無意義的單詞。189。 629: 對于提供了返回值的函數(shù),在引用時最好使用其返回值。189。 630:當(dāng)一個過程(函數(shù))中對較長變量(一般是結(jié)構(gòu)的成員)有較多引用時,可以用一個意義相當(dāng)?shù)暮甏妗?說明:這樣可以增加編程效率和程序的可讀性。示例:在某過程中較多引用TheReceiveBuffer[FirstSocket].byDataPtr,則可以通過以下宏定義來代替: define pSOCKDATA TheReceiveBuffer[FirstScoket].byDataPtr7 可測性185。 71:在同一項(xiàng)目組或產(chǎn)品組內(nèi),要有一套統(tǒng)一的為集成測試與系統(tǒng)聯(lián)調(diào)準(zhǔn)備的調(diào)測開關(guān)及相應(yīng)打印函數(shù),并且要有詳細(xì)的說明。說明:本規(guī)則是針對項(xiàng)目組或產(chǎn)品組的。185。 72:在同一項(xiàng)目組或產(chǎn)品組內(nèi),調(diào)測打印出的信息串的格式要有統(tǒng)一的形式。信息串中至少要有所在模塊名(或源文件名)及行號。說明:統(tǒng)一的調(diào)測信息格式便于集成測試。185。 73:編程的同時要為單元測試選擇恰當(dāng)?shù)臏y試點(diǎn),并仔細(xì)構(gòu)造測試代碼、測試用例,同時給出明確的注釋說明。測試代碼部分應(yīng)作為(模塊中的)一個子模塊,以方便測試代碼在模塊中的安裝與拆卸(通過調(diào)測開關(guān))。說明:為單元測試而準(zhǔn)備。185。 74:在進(jìn)行集成測試/系統(tǒng)聯(lián)調(diào)之前,要構(gòu)造好測試環(huán)境、測試項(xiàng)目及測試用例,同時仔細(xì)分析并優(yōu)化測試用例,以提高測試效率。說明:好的測試用例應(yīng)盡可能模擬出程序所遇到的邊界值、各種復(fù)雜環(huán)境及一些極端情況等。185。 75:使用斷言來發(fā)現(xiàn)軟件問題,提高代碼可測性。說明:斷言是對某種假設(shè)條件進(jìn)行檢查(可理解為若條件成立則無動作,否則應(yīng)報告),它可以快速發(fā)現(xiàn)并定位軟件問題,同時對系統(tǒng)錯誤進(jìn)行自動報警。斷言可以對在系統(tǒng)中隱藏很深,用其它手段極難發(fā)現(xiàn)的問題進(jìn)行定位,從而縮短軟件問題定位時間,提高系統(tǒng)的可測性。實(shí)際應(yīng)用時,可根據(jù)具體情況靈活地設(shè)計(jì)斷言。示例:下面是C語言中的一個斷言,用宏來設(shè)計(jì)的。(其中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( )。}define EXAM_ASSERT( condition ) if (condition) // 若條件成立,則無動作 NULL。 else // 否則報告 exam_assert( __FILE__, __LINE__ ) else // 若不使用斷言測試define EXAM_ASSERT(condition) NULL endif /* end of ASSERT */185。 76:用斷言來檢查程序正常運(yùn)行時不應(yīng)發(fā)生但在調(diào)測時有可能發(fā)生的非法情況。185。 77:不能用斷言來檢查最終產(chǎn)品肯定會出現(xiàn)且必須處理的錯誤情況。說明:斷言是用來處理不應(yīng)該發(fā)生的錯誤情況的,對于可能會發(fā)生的且必須處理的情況要寫防錯程序,而不是斷言。如某模塊收到其它模塊或鏈路上的消息后,要對消息的合理性進(jìn)行檢查,此過程為正常的錯誤檢查,不能用斷言來實(shí)現(xiàn)。185。 78:對較復(fù)雜的斷言加上明確的注釋。說明:為復(fù)雜的斷言加注釋,可澄清斷言含義并減少不必要的誤用。185。 79:用斷言確認(rèn)函數(shù)的參數(shù)。示例:假設(shè)某函數(shù)參數(shù)中有一個指針,那么使用指針前可對它檢查,如下。int exam_fun( unsigned char *str ){ EXAM_ASSERT( str != NULL )。 // 用斷言檢查“假設(shè)指針不為空”這個條件 ... //other program code}185。 710:用斷言保證沒有定義的特性或功能不被使用。示例:假設(shè)某通信模塊在設(shè)計(jì)時,準(zhǔn)備提供“無連接”和“連接” 這兩種業(yè)務(wù)。但當(dāng)前的版本中僅實(shí)現(xiàn)了“無連接”業(yè)務(wù),且在此版本的正式發(fā)行版中,用戶(上層模塊)不應(yīng)產(chǎn)生“連接”業(yè)務(wù)的請求,那么在測試時可用斷言檢查用戶是否使用“連接”業(yè)務(wù)。如下。define EXAM_CONNECTIONLESS 0 // 無連接業(yè)務(wù)define EXAM_CONNECTION 1 // 連接業(yè)務(wù)int msg_process( EXAM_MESSAGE *msg ){ unsigned char service。 /* message service class */ EXAM_ASSERT( msg != NULL )。service = get_msg_service_class( msg )。 EXAM_ASSERT( service != EXAM_CONNECTION )。 // 假設(shè)不使用連接業(yè)務(wù) ... //other program code}185。 711:用斷言對程序開發(fā)環(huán)境(OS/Compiler/Hardware)的假設(shè)進(jìn)行檢查。說明:程序運(yùn)行時所需的軟硬件環(huán)境及配置要求,不能用斷言來檢查,而必須由一段專門代碼處理。用斷言僅可對程序開發(fā)環(huán)境中的假設(shè)及所配置的某版本軟硬件是否具有某種功能的假設(shè)進(jìn)行檢查。如某網(wǎng)卡是否在系統(tǒng)運(yùn)行環(huán)境中配置了,應(yīng)由程序中正式代碼來檢查;而此網(wǎng)卡是否具有某設(shè)想的功能,則可由斷言來檢查。對編譯器提供的功能及特性假設(shè)可用斷言檢查,原因是軟件最終產(chǎn)品(即運(yùn)行代碼或機(jī)器碼)與編譯器已沒有任何直接關(guān)系,即軟件運(yùn)行過程中(注意不是編譯過程中)不會也不應(yīng)該對編譯器的功能提出任何需求。示例:用斷言檢查編譯器的int型數(shù)據(jù)占用的內(nèi)存空間是否為2,如下。EXAM_ASSERT( sizeof( int ) == 2 )。185。 712:正式軟件產(chǎn)品中應(yīng)把斷言及其它調(diào)測代碼去掉(即把有關(guān)的調(diào)測開關(guān)關(guān)掉)。說明:加快軟件運(yùn)行速度。185。 713:在軟件系統(tǒng)中設(shè)置與取消有關(guān)測試手段,不能對軟件實(shí)現(xiàn)的功能等產(chǎn)生影響。說明:即有測試代碼的軟件和關(guān)掉測試代碼的軟件,在功能行為上應(yīng)一致。185。 714:用調(diào)測開關(guān)來切換軟件的DEBUG版和正式版,而不要同時存在正式版本和DEBUG版本的不同源文件,以減少維護(hù)的難度。185。 715:軟件的DEBUG版本和發(fā)行版本應(yīng)該統(tǒng)一維護(hù),不允許分家,并且要時刻注意保證兩個版本在實(shí)現(xiàn)功能上的一致性。189。 71:在編寫代碼之前,應(yīng)預(yù)先設(shè)計(jì)好程序調(diào)試與測試的方法和手段,并設(shè)計(jì)好各種調(diào)測開關(guān)及相應(yīng)測試代碼如打印函數(shù)等。說明:程序的調(diào)試與測試是軟件生存周期中很重要的一個階段,如何對軟件進(jìn)行較全面、高率的測試并盡可能地找出軟件中的錯誤就成為很關(guān)鍵的問題。因此在編寫源代碼之前,除了要有一套比較完善的測試計(jì)劃外,還應(yīng)設(shè)計(jì)出一系列代碼測試手段,為單元測試、集成測試及系統(tǒng)聯(lián)調(diào)提供方便。189。 72:調(diào)測開關(guān)應(yīng)分為不同級別和類型。說明:調(diào)測開關(guān)的設(shè)置及分類應(yīng)從以下幾方面考慮:針對模塊或系統(tǒng)某部分代碼的調(diào)測;針對模塊或系統(tǒng)某功能的調(diào)測;出于某種其它目的,如對性能、容量等的測試。這樣做便于軟件功能的調(diào)測,并且便于模塊的單元測試、系統(tǒng)聯(lián)調(diào)等。189。 73:編寫防錯程序,然后在處理錯誤之后可用斷言宣布發(fā)生錯誤。示例:假如某模塊收到通信鏈路上的消息,則應(yīng)對消息的合法性進(jìn)行檢查,若消息類別不是通信協(xié)議中規(guī)定的,則應(yīng)進(jìn)行出錯處理,之后可用斷言報告,如下例。ifdef _EXAM_ASSERT_TEST_ // 若使用斷言測試/* Notice: this function does not call 39。abort39。 to exit program */void assert_report( char * file_name, unsigned int line_no ){ printf( \n[EXAM]Error Report: %s, line %u\n, file_name, line_no )。}define ASSERT_REPORT( condition ) if ( condition ) // 若條件成立,則無動作 NULL。 else // 否則報告 assert_report ( __FILE__, __LINE__ ) else // 若不使用斷言測試define ASSERT_REPORT( condition ) NULL endif /* end of ASSERT */int msg_handle( unsigned char msg_name, unsigned char * msg ){ switch( msg_name ) { case MSG_ONE: ... // 消息MSG_ONE處理 return MSG_HANDLE_SUCCESS。 ... // 其它合法消息處理 default: ... // 消息出錯處理 ASSERT_REPORT( FALSE )。 // “合法”消息不成立,報告 return MSG_HANDLE_ERROR。 }}8 程序效率185。 81:編程時要經(jīng)常注意代碼的效率。說明:代碼效率分為全局效率、局部效率、時間效率及空間效率。全局效率是站在整個系統(tǒng)的角度上的系統(tǒng)效率;局部效率是站在模塊或函數(shù)角度上的效率;時間效率是程序處理輸入任務(wù)所需的時間長短;空間效率是程序所需內(nèi)存空間,如機(jī)器代碼空間大小、數(shù)據(jù)空間大小、??臻g大小等。185。 82:在保證軟件系統(tǒng)的正確性、穩(wěn)定性、可讀性及可測性的前提下,提高代碼效率。說明:不能一味地追求代碼效率,而對軟件的
點(diǎn)擊復(fù)制文檔內(nèi)容
規(guī)章制度相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1