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

正文內容

編程規(guī)范和范例-經營管理(參考版)

2024-08-18 18:08本頁面
  

【正文】 軟件編程規(guī)范總則 7 可測性 僅供內部使用 39 } define EXAM_ASSERT( condition ) if (condition) // 若條件成立,則無動作 NULL。(其中 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 )。實際應用時,可根據具 體情況靈活地設計斷言。 說明:斷言是對某種假設條件進行檢查(可理解為若條件成立則無動作,否則應報告),它可以快速發(fā)現(xiàn)并定位軟件問題,同時對系統(tǒng)錯誤進行自動報警。 185。74:在進行集成測試 /系統(tǒng)聯(lián)調之前,要構造好測試環(huán)境、測試項目及測試用例,同時仔細分析并優(yōu)化測試用例,以提高測試效率。 說明:為單元測試而準備。73:編程的同時要為單元測試選擇恰當的測試點,并仔細構造測試代碼、測試用例,同時給出明確的注釋說明。 說明:統(tǒng)一的調測信息格式便于集成測試。72:在同一項目組或產品組內,調測打印出的信息串的格式要有統(tǒng)一的形式。 說明:本規(guī)則是針對項目組或產品組的。 示例:在某過程中較多引用 TheReceiveBuffer[FirstSocket].byDataPtr, 則可以通過以下宏定義來代替: define pSOCKDATA TheReceiveBuffer[FirstScoket].byDataPtr 軟件編程規(guī)范總則 7 可測性 僅供內部使用 38 7 可測性 185。630:當一個過程(函數)中對較長變量(一般是結構的成員)有較多引用時,可以用一個意義相當的宏代替。629: 對于提供了返回值的函數,在引用時最好使用其返回值。還有 NULL也是一個無意義的單詞。628:避免使用 BOOL參數。如 DOS下 BC 和 MSC等就不具備可重入函數庫,因為 DOS是單用戶單任務操作系統(tǒng)。在多任務操作系統(tǒng)中 ,函數是否具有可重入性是非常重要的,因為這是多個進程可以共用此函數的必要條件。627:在多任務操作系統(tǒng)的環(huán)境下編程,要注意函數可重入性的構造。(單一功能的函數內聚最高) 說明:對初步劃分后的函數結構應進行改進、優(yōu)化,使之更為合理。 ( 7)函數功能應可預測。 ( 5)降低函數間接口的復雜度。 ( 3)通過分解或合并函數來改進軟件結構。優(yōu)化函數結構時,要遵守以下原則: ( 1)不能影響模 塊功能的實現(xiàn)。 189。 說明:函數的劃分與組織是模塊的實現(xiàn)過程中很關鍵的步驟,如何劃分出合理的函數結構,關系到模塊的最終效率和可維護性、可測性等。 189。 說明:遞歸調用特別是函數間的遞歸調用(如 ABCA),影響程序的可理解性;遞歸調用一般都占用較多的系統(tǒng)資源(如??臻g);遞歸調用對程序的測試有一定影響。 189。公共模塊中的函數及底層函數應該有較高的扇入。當然分解或合并 函數時,不能改變要實現(xiàn)的功能,也不能違背函數間的獨立性。扇出太大,一般是由于缺乏中間層次,可適當增加中間層次的函數。 扇出過大,表明函數過分復雜,需要控制和協(xié)調過多的下級函數;而扇出過小,如總是 1,表明函數的調用層次可能過多,這樣不利程序閱讀和函數結構的分析,并且程序運行時會對系統(tǒng)資源如堆棧空間等造成壓力。623:設計高扇入、合理扇出(小于 7)的函數。所以過小的函數,特別是扇入很低的或功能不明確的函數,不值得單獨存在。622:功能不明確較小的函數,特別是僅有一個上級函數調用它時,應考慮把它合并到上級函數中,而不必單獨存在。 說明:若此段代碼各語句之間有實質性關聯(lián)并且是完成同一件功能的,那么可考慮把此段代碼構造成一個新的函數。 /* 初始化“點”的坐標 */ 軟件編程規(guī)范總則 6 函數、過程 僅供內部使用 36 } 189。 /* 初始化矩形的長與寬 */ } void Init_Point( void ) { = 10。 應如下分為兩個函數: void Init_Rect( void ) { = 0。 = 10。 = 0。 示例:如下函數就是一種隨機內聚。 在編程時,經常遇到在不同函數中使用相同的代碼,許多開發(fā)人員都愿把這些代碼提出來,并構成一個新函數。隨機內聚給函數 或過程的維護、測試及以后的升級等造成了不便,同時也使函數或過程的功能不明確。 說明:防止函數或過程內出現(xiàn)隨機內聚。 189。619:避免函數中不必要語句,防止程序中的垃圾代碼。 說明:因為數據類型轉換或多或少存在危險。 189。 189。 189。 建議 615:函數的返回值要清楚、明了,讓使用者不容易忽視錯誤情況。 建議 614:避免使用無意義或含義不清的動詞為函數命名。 int input_record( void ) 。 示例:參照如下方式命名函數。613:使用動賓詞組為執(zhí)行某操作的函數命名。612:函數名應準確描述函數的功能。函數在使用輸入之前,應進行必要的檢查。611:檢查函數所有 非參數輸入的有效性,如數據文件、公共變量等。610:檢查函數所有參數輸入的有效性。 } 軟件編程規(guī)范總則 6 函數、過程 僅供內部使用 34 int sub( int a, int b ) { return (a b)。 } } 不如分為如下兩個函數清晰。 int add_sub( int a, int b, unsigned char add_sub_flg ) { if (add_sub_flg == INTEGER_ADD) { return (a + b)。非調度函數的控制參數增加了函數間的控制耦合,很可能使函數間的耦合度增大,并使函數的功能不唯一。調度函數是指根據輸入的消息類型或控制命令,來啟動相應的功能實體(即函數或過程),而本身并不完成具體功能。69:非調度函數應減少 或防止控制參數,盡量只使用數據參數。 說明:目的減少函數間接口的復雜度。 ... // 程序代碼 proc Print_Msg // 過程(函數) Print_Msg ... // 程序代碼 jmp LABEL ... // 程序代碼 軟件編程規(guī)范總則 6 函數、過程 僅供內部使用 33 endp proc Input_Msg // 過程(函數) Input_Msg ... // 程序代碼 LABEL: ... // 程序代碼 endp 189。 示例:如下是在 DOS下 TASM的匯編程序例子。由于目前大部分高級語言都是結構化的,所以通過具體語言的語法要求與編譯器功能,基本就可以防止這種情況發(fā)生。67:盡量不要編寫依賴于其他函數內部實現(xiàn)的函數。 } return sum。 index = base。 // 若改為 auto類型,則函數即變?yōu)榭深A測。 static unsigned int sum = 0。 示例:如下函數,其返回值(即功能)是不可預測的。這樣的函數既不易于理解又不利于測試和維護。66:函數的功能應該是可以預測的,也就是只要輸入數據相同就應產生同樣的輸出。 說明:多功能集于一身的函數,很可能使函數的理解、測試、維護等變得困難。 軟件編程規(guī)范總則 6 函數、過程 僅供內部使用 32 189。 或改為如下。 int max (int a, int b) { return ((a b) ? a : b)。 value = ( a b ) ? a : b 。 說明:雖 然為僅用一兩行就可完成的功能去編函數好象沒有必要,但用函數可使功能明確化,增加程序可讀性,亦可方便維護、測試。 189。 189。62:函數的規(guī)模盡量限制在 200行以內。 } *sum = sum_temp。 count num。 sum_temp = 0。 void sum_data( unsigned int num, int *data, int *sum ) 軟件編程規(guī)范總則 6 函數、過程 僅供內部使用 31 { unsigned int count 。 // sum 成了工作變量,不太好。 count num。 *sum = 0。 示例:下函數的實現(xiàn)不太好。 說明:將函數的參數作為工作變量,有可能錯誤地改變參數內容,所以很危險。 189。65:在同一項目組應明確規(guī)定對接口函數參數的合法性檢查應由函數的調用者負責還是由接口函數本身負責,缺省是由函數調用者負責。 return temp。 // 信號),本進程必須等待其釋放信號后,才可繼 [釋放信號量操作 ] // 續(xù)執(zhí)行。 軟件編程規(guī)范總則 6 函數、過程 僅供內部使用 30 [申請信號量操作 ] // 若申請不到“信號量”,說明另外的進程正處于 Exam = para。此函數應如下改進。 return temp。 Exam = para。那么如下函數不具有可重入性。 說明:若對所使用的全局變量不加以保護,則此函數就不具有可重入性,即當多個進程調用此函數時,很有可能使有關全局變量變?yōu)椴豢芍獱顟B(tài)。 185。63:編寫可重入函 數時,應注意局部變量的使用(如編寫 C/C++語言的可重入函數時,應使用 auto即缺省態(tài)局部變量或寄存器變量)。62:明確函數功能,精確(而不是近似)地實現(xiàn)函數設計。61:對所調用函數的錯誤返回碼要仔細、全面地處理。 示例:如下圖,當一個 long型數(如圖中 long1)在內存中的位置正好與內存的字邊界對齊 時, CPU存取這個數只需訪問一次內存,而當一個 long型數(如圖中的 long2)在內存中的位置跨越了字邊界時, CPU存取這個數就需要多次訪問內存,如 i960cx訪問這樣的數需讀內存三次(一個 BYTE、一個 SHORT、一個 BYTE,由 CPU的微代碼執(zhí)行,對軟件透明),所有對齊方式下 CPU的運行效率明顯快多了。 內存: 0 1 2 ... (從低到高,以字節(jié)為單位) exam exam低字節(jié) exam高字節(jié) 內存: 0 bit 1 bit 2 bit ... (字節(jié)的各“位”) EXAM_BIT A1 A2 A3 如下是 68360 CPU生成短整數及位域的方式。 /* bit 2 5 */ } EXAM_BIT。 /* bit 0 7 */ unsigned int A2: 1。 unsigned short int exam。 說明:比如 Intel CPU與 68360 CPU,在處理位域及整數時,其在內存存放的“順序”正好相反。 189。 typedef float DISTANCE。 typedef unsigned int DWORD。 typedef unsigned char BYTE。 示例 :可參考如下方式聲明自定義數據類型。注意其命名方式在同一產品中的統(tǒng)一。 189。 189。 189。 exam = chr。 unsigned short int exam。 示例:如下賦值,多數編譯器不產生告警,但值的含義還是稍有變化。 189。510:編程時,要注意數據類型的強制轉換。這些細節(jié)對程序質量的保證非常重要。59:留心具體語言及編譯器處理不同數據類型的原則及有關細節(jié)。如果要想使產品具有較好的前向兼容,那么在產品設計之初就應為以后版本升級保留一定余地,并且在產品升級時必須考慮前一版本的各種特性 。58:結構的設計要盡量考慮向前兼容和以后的版本升級,并為某些未來可能的應用保留余地(如預留一些空間等)。 } EXAMPLE。 unsigned int set_flg: 1。 若改成如下形式,不僅可節(jié)省 1字節(jié)空間,可讀性也變好了。 unsigned int set_flg: 1。 typedef struct EXAMPLE_STRU { unsigned int valid: 1。 說明:合理排列結構中元素順序,可節(jié)省空間并增加可理解性。 軟件編程規(guī)范總則 5 變量、結構 僅供內部使用 26 189。 PERSON_ADDRESS person_addr。 } PERSON_ADDRESS。 unsigned char city[15]。 } PERSON_BASE_INFO。 u
點擊復制文檔內容
環(huán)評公示相關推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1