課程簡(jiǎn)介
本課程針對(duì)有項(xiàng)目經(jīng)驗(yàn)的 C 程序員。課程的主要出發(fā)點(diǎn)是結(jié)合真實(shí)案例,讓程序員理解高質(zhì)量編程的特點(diǎn),并修正平時(shí)編碼中的一些誤區(qū),本課程包含低質(zhì)量代碼案例,并給出這些低質(zhì)量代碼的提高方法,以實(shí)例促進(jìn)理解。
課程內(nèi)容分為兩部分,一是關(guān)于C語言本身的知識(shí),例如內(nèi)存管理、函數(shù)編寫等。另一部分是如何運(yùn)用C語言進(jìn)行系統(tǒng)的設(shè)計(jì),例如如何進(jìn)行模塊的劃分、接口設(shè)計(jì)、構(gòu)建靈活和高可擴(kuò)展性的系統(tǒng)。
本課程讓具有經(jīng)驗(yàn)的軟件開發(fā)人員提升對(duì)C語言進(jìn)行軟件設(shè)計(jì)的理解,掌握軟件設(shè)計(jì)的原則和方法,并能夠用這些原則和方法去指導(dǎo)設(shè)計(jì)實(shí)踐。
目標(biāo)收益
培訓(xùn)對(duì)象
C程序員、架構(gòu)師
課程大綱
第一單元 c語言關(guān)鍵特性 |
內(nèi)容一:C內(nèi)存管理 【0.5小時(shí)】 1.長(zhǎng)度明確 2.預(yù)估內(nèi)存 3.防止棧溢出 4.避免在堆中頻繁地申請(qǐng)、釋放小塊內(nèi)存 5.多塊內(nèi)存盡量大小相同,互相靠近 6.了解系統(tǒng)數(shù)據(jù)結(jié)構(gòu)的運(yùn)作機(jī)制 7.考慮分配順序 8.結(jié)構(gòu)的內(nèi)存分布 9.值對(duì)象的注意點(diǎn)(函數(shù)傳參、臨時(shí)變量、函數(shù)替代參數(shù)) 10.實(shí)例對(duì)象與指針對(duì)象的異同 內(nèi)容三:C函數(shù)的設(shè)計(jì)【1.5小時(shí)】 1.函數(shù)的扇入與扇出 2.一個(gè)函數(shù)只做一件事,不要編寫多種功能集于一身的函數(shù) 3.函數(shù)要小且容易測(cè)試 4.明確地定義函數(shù)的參數(shù) 5.避免布爾類型參數(shù) 6.編寫函數(shù)使其在給定有效的輸入情況下不會(huì)失敗 7.函數(shù)不依賴于另一個(gè)函數(shù)的內(nèi)部細(xì)節(jié) 8.函數(shù)內(nèi)部代碼塊 9.多線程編程——線程安全與函數(shù)的可重入 內(nèi)容四:防御性編程【0.5小時(shí)】 1.使用好的編碼風(fēng)格,形成編碼規(guī)范 2.不要倉促的編寫代碼 3.不要相信任何人 4.編碼的目標(biāo)要清晰,而不是簡(jiǎn)潔 5.編譯時(shí)打開所有警告開關(guān) 6.使用安全的數(shù)據(jù)結(jié)構(gòu) 7.檢查所有的返回值 8.審慎的處理內(nèi)存 9.在聲明位置初始化所有變量 10.避免運(yùn)算越界 11.使用斷言 內(nèi)容五:代碼重構(gòu)【0.5小時(shí)】 1.代碼重構(gòu)的原則 2.代碼命名-很重要,但是總被忽略的基本功 3.提煉函數(shù) 4.提煉判斷條件 5.簡(jiǎn)化函數(shù)參數(shù) 6.全局變量的危害辨析 7.如何解除全局變量的危害 8.避免函數(shù)傳遞中的隱形 bug 9.調(diào)整函數(shù)位置 |
第二單元C語言模塊及架構(gòu)設(shè)計(jì) |
內(nèi)容一 模塊劃分及面向?qū)ο笤O(shè)計(jì) 【1.5小時(shí)】 1.組件設(shè)計(jì)中的開-閉原則 2.模塊及組件的職責(zé)分配設(shè)計(jì) 3.面向?qū)ο笤O(shè)計(jì)與面向過程辨析 4.高內(nèi)聚松耦合與單一職責(zé) 5.封裝變化點(diǎn) 6.關(guān)于模塊的創(chuàng)建及依賴倒置 7.控制模塊設(shè)計(jì),及過大組件/模塊的分解原則 8.使用間接模式 9.隔離不同的關(guān)注面 內(nèi)容二:C語言的面向?qū)ο蠹跋到y(tǒng)建?!?小時(shí)】 1.基于領(lǐng)域分析的建模方式 2.事務(wù)腳本與領(lǐng)域驅(qū)動(dòng) 3.如何用c來組織面向的設(shè)計(jì) 4.封裝、繼承、多態(tài) 5.struct 模擬 class 6.案例分析 7.練習(xí):用面向?qū)ο蟮乃季S對(duì)某項(xiàng)目進(jìn)行建模 內(nèi)容三:C語言架構(gòu)設(shè)計(jì)【1.5小時(shí)】 1.軟件分層與中間層的設(shè)計(jì) 2.接口設(shè)計(jì)要點(diǎn)與接口隔離原則(ISP) 3.使用發(fā)布-訂閱模式構(gòu)建松耦合的系統(tǒng) 4.使用IOC構(gòu)建高可擴(kuò)展的系統(tǒng) 5.提升系統(tǒng)效率時(shí)的注意點(diǎn) 6.練習(xí):基于分層架構(gòu)的c程序設(shè)計(jì)——某文件處理系統(tǒng) 內(nèi)容四:?jiǎn)卧獪y(cè)試【1小時(shí)】 1.從流程上控制代碼質(zhì)量 2.單元測(cè)試在質(zhì)量控制流程中作用 3.單元測(cè)試的原則 4.選擇合適的單元測(cè)試框架 5.測(cè)試用例設(shè)計(jì)原則 6.測(cè)試驅(qū)動(dòng)開發(fā)(TDD) 7.代碼覆蓋率 8.性能分析與提升 |
第一單元 c語言關(guān)鍵特性 內(nèi)容一:C內(nèi)存管理 【0.5小時(shí)】 1.長(zhǎng)度明確 2.預(yù)估內(nèi)存 3.防止棧溢出 4.避免在堆中頻繁地申請(qǐng)、釋放小塊內(nèi)存 5.多塊內(nèi)存盡量大小相同,互相靠近 6.了解系統(tǒng)數(shù)據(jù)結(jié)構(gòu)的運(yùn)作機(jī)制 7.考慮分配順序 8.結(jié)構(gòu)的內(nèi)存分布 9.值對(duì)象的注意點(diǎn)(函數(shù)傳參、臨時(shí)變量、函數(shù)替代參數(shù)) 10.實(shí)例對(duì)象與指針對(duì)象的異同 內(nèi)容三:C函數(shù)的設(shè)計(jì)【1.5小時(shí)】 1.函數(shù)的扇入與扇出 2.一個(gè)函數(shù)只做一件事,不要編寫多種功能集于一身的函數(shù) 3.函數(shù)要小且容易測(cè)試 4.明確地定義函數(shù)的參數(shù) 5.避免布爾類型參數(shù) 6.編寫函數(shù)使其在給定有效的輸入情況下不會(huì)失敗 7.函數(shù)不依賴于另一個(gè)函數(shù)的內(nèi)部細(xì)節(jié) 8.函數(shù)內(nèi)部代碼塊 9.多線程編程——線程安全與函數(shù)的可重入 內(nèi)容四:防御性編程【0.5小時(shí)】 1.使用好的編碼風(fēng)格,形成編碼規(guī)范 2.不要倉促的編寫代碼 3.不要相信任何人 4.編碼的目標(biāo)要清晰,而不是簡(jiǎn)潔 5.編譯時(shí)打開所有警告開關(guān) 6.使用安全的數(shù)據(jù)結(jié)構(gòu) 7.檢查所有的返回值 8.審慎的處理內(nèi)存 9.在聲明位置初始化所有變量 10.避免運(yùn)算越界 11.使用斷言 內(nèi)容五:代碼重構(gòu)【0.5小時(shí)】 1.代碼重構(gòu)的原則 2.代碼命名-很重要,但是總被忽略的基本功 3.提煉函數(shù) 4.提煉判斷條件 5.簡(jiǎn)化函數(shù)參數(shù) 6.全局變量的危害辨析 7.如何解除全局變量的危害 8.避免函數(shù)傳遞中的隱形 bug 9.調(diào)整函數(shù)位置 |
第二單元C語言模塊及架構(gòu)設(shè)計(jì) 內(nèi)容一 模塊劃分及面向?qū)ο笤O(shè)計(jì) 【1.5小時(shí)】 1.組件設(shè)計(jì)中的開-閉原則 2.模塊及組件的職責(zé)分配設(shè)計(jì) 3.面向?qū)ο笤O(shè)計(jì)與面向過程辨析 4.高內(nèi)聚松耦合與單一職責(zé) 5.封裝變化點(diǎn) 6.關(guān)于模塊的創(chuàng)建及依賴倒置 7.控制模塊設(shè)計(jì),及過大組件/模塊的分解原則 8.使用間接模式 9.隔離不同的關(guān)注面 內(nèi)容二:C語言的面向?qū)ο蠹跋到y(tǒng)建?!?小時(shí)】 1.基于領(lǐng)域分析的建模方式 2.事務(wù)腳本與領(lǐng)域驅(qū)動(dòng) 3.如何用c來組織面向的設(shè)計(jì) 4.封裝、繼承、多態(tài) 5.struct 模擬 class 6.案例分析 7.練習(xí):用面向?qū)ο蟮乃季S對(duì)某項(xiàng)目進(jìn)行建模 內(nèi)容三:C語言架構(gòu)設(shè)計(jì)【1.5小時(shí)】 1.軟件分層與中間層的設(shè)計(jì) 2.接口設(shè)計(jì)要點(diǎn)與接口隔離原則(ISP) 3.使用發(fā)布-訂閱模式構(gòu)建松耦合的系統(tǒng) 4.使用IOC構(gòu)建高可擴(kuò)展的系統(tǒng) 5.提升系統(tǒng)效率時(shí)的注意點(diǎn) 6.練習(xí):基于分層架構(gòu)的c程序設(shè)計(jì)——某文件處理系統(tǒng) 內(nèi)容四:?jiǎn)卧獪y(cè)試【1小時(shí)】 1.從流程上控制代碼質(zhì)量 2.單元測(cè)試在質(zhì)量控制流程中作用 3.單元測(cè)試的原則 4.選擇合適的單元測(cè)試框架 5.測(cè)試用例設(shè)計(jì)原則 6.測(cè)試驅(qū)動(dòng)開發(fā)(TDD) 7.代碼覆蓋率 8.性能分析與提升 |