freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片
正文內(nèi)容
首頁(yè)
>
資源列表
>
更多資源
某公司程序培訓(xùn)教材(文件)
2025-07-27 13:12
上一頁(yè)面
下一頁(yè)面
【正文】 ,在處理位域及整數(shù)時(shí),其在內(nèi)存存放的“順序”正好相反。 /* bit 0 7 */ unsigned int A2: 1。內(nèi)存: 0 1 2 ... (從低到高,以字節(jié)為單位)exam exam低字節(jié) exam高字節(jié)內(nèi)存: 0 bit 1 bit 2 bit ... (字節(jié)的各“位”)EXAM_BIT A1 A2 A3如下是68360 CPU生成短整數(shù)及位域的方式。 61:對(duì)所調(diào)用函數(shù)的錯(cuò)誤返回碼要仔細(xì)、全面地處理。 63:編寫可重入函數(shù)時(shí),應(yīng)注意局部變量的使用(如編寫C/C++語(yǔ)言的可重入函數(shù)時(shí),應(yīng)使用auto即缺省態(tài)局部變量或寄存器變量)。說(shuō)明:若對(duì)所使用的全局變量不加以保護(hù),則此函數(shù)就不具有可重入性,即當(dāng)多個(gè)進(jìn)程調(diào)用此函數(shù)時(shí),很有可能使有關(guān)全局變量變?yōu)椴豢芍獱顟B(tài)。 Exam = para。此函數(shù)應(yīng)如下改進(jìn)。 // 信號(hào)),本進(jìn)程必須等待其釋放信號(hào)后,才可繼 [釋放信號(hào)量操作] // 續(xù)執(zhí)行。 65:在同一項(xiàng)目組應(yīng)明確規(guī)定對(duì)接口函數(shù)參數(shù)的合法性檢查應(yīng)由函數(shù)的調(diào)用者負(fù)責(zé)還是由接口函數(shù)本身負(fù)責(zé),缺省是由函數(shù)調(diào)用者負(fù)責(zé)。說(shuō)明:將函數(shù)的參數(shù)作為工作變量,有可能錯(cuò)誤地改變參數(shù)內(nèi)容,所以很危險(xiǎn)。 *sum = 0。 // sum成了工作變量,不太好。 sum_temp = 0。 } *sum = sum_temp。189。說(shuō)明:雖然為僅用一兩行就可完成的功能去編函數(shù)好象沒(méi)有必要,但用函數(shù)可使功能明確化,增加程序可讀性,亦可方便維護(hù)、測(cè)試。int max (int a, int b){ return ((a b) ? a : b)。189。 66:函數(shù)的功能應(yīng)該是可以預(yù)測(cè)的,也就是只要輸入數(shù)據(jù)相同就應(yīng)產(chǎn)生同樣的輸出。示例:如下函數(shù),其返回值(即功能)是不可預(yù)測(cè)的。 // 若改為auto類型,則函數(shù)即變?yōu)榭深A(yù)測(cè)。 } return sum。由于目前大部分高級(jí)語(yǔ)言都是結(jié)構(gòu)化的,所以通過(guò)具體語(yǔ)言的語(yǔ)法要求與編譯器功能,基本就可以防止這種情況發(fā)生。... // 程序代碼proc Print_Msg // 過(guò)程(函數(shù))Print_Msg ... // 程序代碼 jmp LABEL ... // 程序代碼endpproc Input_Msg // 過(guò)程(函數(shù))Input_Msg ... // 程序代碼LABEL: ... // 程序代碼endp189。 69:非調(diào)度函數(shù)應(yīng)減少或防止控制參數(shù),盡量只使用數(shù)據(jù)參數(shù)。非調(diào)度函數(shù)的控制參數(shù)增加了函數(shù)間的控制耦合,很可能使函數(shù)間的耦合度增大,并使函數(shù)的功能不唯一。 }}不如分為如下兩個(gè)函數(shù)清晰。 610:檢查函數(shù)所有參數(shù)輸入的有效性。函數(shù)在使用輸入之前,應(yīng)進(jìn)行必要的檢查。 613:使用動(dòng)賓詞組為執(zhí)行某操作的函數(shù)命名。int input_record( void ) 。建議615:函數(shù)的返回值要清楚、明了,讓使用者不容易忽視錯(cuò)誤情況。189。說(shuō)明:因?yàn)閿?shù)據(jù)類型轉(zhuǎn)換或多或少存在危險(xiǎn)。189。隨機(jī)內(nèi)聚給函數(shù)或過(guò)程的維護(hù)、測(cè)試及以后的升級(jí)等造成了不便,同時(shí)也使函數(shù)或過(guò)程的功能不明確。示例:如下函數(shù)就是一種隨機(jī)內(nèi)聚。 = 10。 /* 初始化矩形的長(zhǎng)與寬 */}void Init_Point( void ){ = 10。說(shuō)明:若此段代碼各語(yǔ)句之間有實(shí)質(zhì)性關(guān)聯(lián)并且是完成同一件功能的,那么可考慮把此段代碼構(gòu)造成一個(gè)新的函數(shù)。所以過(guò)小的函數(shù),特別是扇入很低的或功能不明確的函數(shù),不值得單獨(dú)存在。扇出過(guò)大,表明函數(shù)過(guò)分復(fù)雜,需要控制和協(xié)調(diào)過(guò)多的下級(jí)函數(shù);而扇出過(guò)小,如總是1,表明函數(shù)的調(diào)用層次可能過(guò)多,這樣不利程序閱讀和函數(shù)結(jié)構(gòu)的分析,并且程序運(yùn)行時(shí)會(huì)對(duì)系統(tǒng)資源如堆棧空間等造成壓力。當(dāng)然分解或合并函數(shù)時(shí),不能改變要實(shí)現(xiàn)的功能,也不能違背函數(shù)間的獨(dú)立性。189。189。189。(3)通過(guò)分解或合并函數(shù)來(lái)改進(jìn)軟件結(jié)構(gòu)。(7)函數(shù)功能應(yīng)可預(yù)測(cè)。 627:在多任務(wù)操作系統(tǒng)的環(huán)境下編程,要注意函數(shù)可重入性的構(gòu)造。如DOS下BC和MSC等就不具備可重入函數(shù)庫(kù),因?yàn)镈OS是單用戶單任務(wù)操作系統(tǒng)。還有NULL也是一個(gè)無(wú)意義的單詞。 630:當(dāng)一個(gè)過(guò)程(函數(shù))中對(duì)較長(zhǎng)變量(一般是結(jié)構(gòu)的成員)有較多引用時(shí),可以用一個(gè)意義相當(dāng)?shù)暮甏?。說(shuō)明:本規(guī)則是針對(duì)項(xiàng)目組或產(chǎn)品組的。說(shuō)明:統(tǒng)一的調(diào)測(cè)信息格式便于集成測(cè)試。說(shuō)明:為單元測(cè)試而準(zhǔn)備。185。實(shí)際應(yīng)用時(shí),可根據(jù)具體情況靈活地設(shè)計(jì)斷言。}define EXAM_ASSERT( condition ) if (condition) // 若條件成立,則無(wú)動(dòng)作 NULL。 77:不能用斷言來(lái)檢查最終產(chǎn)品肯定會(huì)出現(xiàn)且必須處理的錯(cuò)誤情況。 78:對(duì)較復(fù)雜的斷言加上明確的注釋。示例:假設(shè)某函數(shù)參數(shù)中有一個(gè)指針,那么使用指針前可對(duì)它檢查,如下。示例:假設(shè)某通信模塊在設(shè)計(jì)時(shí),準(zhǔn)備提供“無(wú)連接”和“連接” 這兩種業(yè)務(wù)。 /* message service class */ EXAM_ASSERT( msg != NULL )。 711:用斷言對(duì)程序開發(fā)環(huán)境(OS/Compiler/Hardware)的假設(shè)進(jìn)行檢查。對(duì)編譯器提供的功能及特性假設(shè)可用斷言檢查,原因是軟件最終產(chǎn)品(即運(yùn)行代碼或機(jī)器碼)與編譯器已沒(méi)有任何直接關(guān)系,即軟件運(yùn)行過(guò)程中(注意不是編譯過(guò)程中)不會(huì)也不應(yīng)該對(duì)編譯器的功能提出任何需求。 712:正式軟件產(chǎn)品中應(yīng)把斷言及其它調(diào)測(cè)代碼去掉(即把有關(guān)的調(diào)測(cè)開關(guān)關(guān)掉)。說(shuō)明:即有測(cè)試代碼的軟件和關(guān)掉測(cè)試代碼的軟件,在功能行為上應(yīng)一致。 715:軟件的DEBUG版本和發(fā)行版本應(yīng)該統(tǒng)一維護(hù),不允許分家,并且要時(shí)刻注意保證兩個(gè)版本在實(shí)現(xiàn)功能上的一致性。因此在編寫源代碼之前,除了要有一套比較完善的測(cè)試計(jì)劃外,還應(yīng)設(shè)計(jì)出一系列代碼測(cè)試手段,為單元測(cè)試、集成測(cè)試及系統(tǒng)聯(lián)調(diào)提供方便。這樣做便于軟件功能的調(diào)測(cè),并且便于模塊的單元測(cè)試、系統(tǒng)聯(lián)調(diào)等。ifdef _EXAM_ASSERT_TEST_ // 若使用斷言測(cè)試/* Notice: this function does not call 39。 else // 否則報(bào)告 assert_report ( __FILE__, __LINE__ ) else // 若不使用斷言測(cè)試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。 81:編程時(shí)要經(jīng)常注意代碼的效率。 82:在保證軟件系統(tǒng)的正確性、穩(wěn)定性、可讀性及可測(cè)性的前提下,提高代碼效率。全局效率是站在整個(gè)系統(tǒng)的角度上的系統(tǒng)效率;局部效率是站在模塊或函數(shù)角度上的效率;時(shí)間效率是程序處理輸入任務(wù)所需的時(shí)間長(zhǎng)短;空間效率是程序所需內(nèi)存空間,如機(jī)器代碼空間大小、數(shù)據(jù)空間大小、棧空間大小等。 // “合法”消息不成立,報(bào)告 return MSG_HANDLE_ERROR。 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 )。 73:編寫防錯(cuò)程序,然后在處理錯(cuò)誤之后可用斷言宣布發(fā)生錯(cuò)誤。 72:調(diào)測(cè)開關(guān)應(yīng)分為不同級(jí)別和類型。 71:在編寫代碼之前,應(yīng)預(yù)先設(shè)計(jì)好程序調(diào)試與測(cè)試的方法和手段,并設(shè)計(jì)好各種調(diào)測(cè)開關(guān)及相應(yīng)測(cè)試代碼如打印函數(shù)等。 714:用調(diào)測(cè)開關(guān)來(lái)切換軟件的DEBUG版和正式版,而不要同時(shí)存在正式版本和DEBUG版本的不同源文件,以減少維護(hù)的難度。185。EXAM_ASSERT( sizeof( int ) == 2 )。用斷言僅可對(duì)程序開發(fā)環(huán)境中的假設(shè)及所配置的某版本軟硬件是否具有某種功能的假設(shè)進(jìn)行檢查。 EXAM_ASSERT( service != EXAM_CONNECTION )。如下。 // 用斷言檢查“假設(shè)指針不為空”這個(gè)條件 ... //other program code}185。185。如某模塊收到其它模塊或鏈路上的消息后,要對(duì)消息的合理性進(jìn)行檢查,此過(guò)程為正常的錯(cuò)誤檢查,不能用斷言來(lái)實(shí)現(xiàn)。 76:用斷言來(lái)檢查程序正常運(yùn)行時(shí)不應(yīng)發(fā)生但在調(diào)測(cè)時(shí)有可能發(fā)生的非法情況。(其中NULL為0L)ifdef _EXAM_ASSERT_TEST_ // 若使用斷言測(cè)試void exam_assert( char * file_name, unsigned int line_no ){ printf( \n[EXAM]Assert failed: %s, line %u\n, file_name, line_no )。說(shuō)明:斷言是對(duì)某種假設(shè)條件進(jìn)行檢查(可理解為若條件成立則無(wú)動(dòng)作,否則應(yīng)報(bào)告),它可以快速發(fā)現(xiàn)并定位軟件問(wèn)題,同時(shí)對(duì)系統(tǒng)錯(cuò)誤進(jìn)行自動(dòng)報(bào)警。 74:在進(jìn)行集成測(cè)試/系統(tǒng)聯(lián)調(diào)之前,要構(gòu)造好測(cè)試環(huán)境、測(cè)試項(xiàng)目及測(cè)試用例,同時(shí)仔細(xì)分析并優(yōu)化測(cè)試用例,以提高測(cè)試效率。 73:編程的同時(shí)要為單元測(cè)試選擇恰當(dāng)?shù)臏y(cè)試點(diǎn),并仔細(xì)構(gòu)造測(cè)試代碼、測(cè)試用例,同時(shí)給出明確的注釋說(shuō)明。 72:在同一項(xiàng)目組或產(chǎn)品組內(nèi),調(diào)測(cè)打印出的信息串的格式要有統(tǒng)一的形式。示例:在某過(guò)程中較多引用TheReceiveBuffer[FirstSocket].byDataPtr,則可以通過(guò)以下宏定義來(lái)代替: define pSOCKDATA TheReceiveBuffer[FirstScoket].byDataPtr7 可測(cè)性185。 629: 對(duì)于提供了返回值的函數(shù),在引用時(shí)最好使用其返回值。 628:避免使用BOOL參數(shù)。在多任務(wù)操作系統(tǒng)中,函數(shù)是否具有可重入性是非常重要的,因?yàn)檫@是多個(gè)進(jìn)程可以共用此函數(shù)的必要條件。(單一功能的函數(shù)內(nèi)聚最高)說(shuō)明:對(duì)初步劃分后的函數(shù)結(jié)構(gòu)應(yīng)進(jìn)行改進(jìn)、優(yōu)化,使之更為合理。(5)降低函數(shù)間接口的復(fù)雜度。優(yōu)化函數(shù)結(jié)構(gòu)時(shí),要遵守以下原則:(1)不能影響模塊功能的實(shí)現(xiàn)。說(shuō)明:函數(shù)的劃分與組織是模塊的實(shí)現(xiàn)過(guò)程中很關(guān)鍵的步驟,如何劃分出合理的函數(shù)結(jié)構(gòu),關(guān)系到模塊的最終效率和可維護(hù)性、可測(cè)性等。說(shuō)明:遞歸調(diào)用特別是函數(shù)間的遞歸調(diào)用(如ABCA),影響程序的可理解性;遞歸調(diào)用一般都占用較多的系統(tǒng)資源(如棧空間);遞歸調(diào)用對(duì)程序的測(cè)試有一定影響。公共模塊中的函數(shù)及底層函數(shù)應(yīng)該有較高的扇入。扇出太大,一般是由于缺乏中間層次,可適當(dāng)增加中間層次的函數(shù)。 623:設(shè)計(jì)高扇入、合理扇出(小于7)的函數(shù)。 622:功能不明確較小的函數(shù),特別是僅有一個(gè)上級(jí)函數(shù)調(diào)用它時(shí),應(yīng)考慮把它合并到上級(jí)函數(shù)中,而不必單獨(dú)存在。 /* 初始化“點(diǎn)”的坐標(biāo) */}189。應(yīng)如下分為兩個(gè)函數(shù):void Init_Rect( void ){ = 0。 = 0。在編程時(shí),經(jīng)常遇到在不同函數(shù)中使用相同的代碼,許多開發(fā)人員都愿把這些代碼提出來(lái),并構(gòu)成一個(gè)新函數(shù)。說(shuō)明:防止函數(shù)或過(guò)程內(nèi)出現(xiàn)隨機(jī)內(nèi)聚。 619:避免函數(shù)中不必要語(yǔ)句,防止程序中的垃圾代碼。189。189。建議614:避免使用無(wú)意義或含義不清的動(dòng)詞為函數(shù)命名。示例:參照如下方式命名函數(shù)。 612:函數(shù)名應(yīng)準(zhǔn)確描述函數(shù)的功能。 611:檢查函數(shù)所有非參數(shù)輸入的有效性,如數(shù)據(jù)文件、公共變量等。}int sub( int a, int b ) { return (a