課程簡介
課程內(nèi)容:課程圍繞“字符串與內(nèi)存處理”這一問題,通過一系列環(huán)環(huán)相扣的有趣的故事場景,揭示C/C++語言中容易讓人犯錯或是誤用的“陷阱”,并從逐步的問題解決中演化出方案、總結(jié)出應對規(guī)則。
目標收益
課程中的理論和經(jīng)驗來自于對大量開發(fā)人員常犯錯誤與所遇問題的歸納、分析與總結(jié)。并有針對性的給出解決方法。學員經(jīng)過課程已經(jīng)可以充分理解在特定的場景下如何提升代碼的質(zhì)量,并可以根據(jù)課程中總結(jié)的規(guī)則,對自己的代碼進行檢查,以培養(yǎng)良好的編碼風格,和嚴謹?shù)木幋a習慣。
培訓對象
各類IT/軟件企業(yè)和研發(fā)機構(gòu)的軟件設計師、程序員。對于對自己的代碼不自信,常常被Bug折磨的人非常有效。
課程大綱
編寫高質(zhì)量C代碼 (3~4小時) |
內(nèi)容一:什么樣的代碼是高質(zhì)量的代碼 1.理解高質(zhì)量代碼需要考慮的各種因素 2.嘗試結(jié)合各種因素編寫一個高質(zhì)量的strcpy() 3.這樣的strcpy()可能會遇到什么樣的問題 4.該如何一步步解決這些問題 內(nèi)容二:利用現(xiàn)有工具提升代碼的品質(zhì) 1.如何保證參數(shù)的合法性 2.如何提高程序的健壯性 3.如何優(yōu)化代碼,減少冗余邏輯 內(nèi)容三:如何確保代碼的安全性 1.什么樣的代碼會有安全問題 2.安全問題可能造成的危害 3.什么是緩沖區(qū)溢出,原理是什么 4.如何避免/應對緩沖區(qū)溢出 內(nèi)容四:如何檢查/避免代碼中的內(nèi)存泄露 1.內(nèi)存泄露該如何檢查 2.應對內(nèi)存泄露的方法 3.權(quán)衡,內(nèi)存泄露時應該考慮的對策 內(nèi)容五:雜項 1. 高階參數(shù)檢查 2. 局部變量不初始化的危害 |
編寫高質(zhì)量C++代碼(3~4小時) |
內(nèi)容六:將代碼從C過渡到C++ 1.C++中高質(zhì)量代碼需要考慮的問題 2.C++中的內(nèi)存泄露與C中的區(qū)別 3.如何在C++中防止數(shù)組形式的內(nèi)存泄露 內(nèi)容七:C++字符串類中鮮為人知的秘密 1. 為什么有時候需要重載拷貝構(gòu)造函數(shù)/賦值運算符 2. 該怎么確定賦值運算符的返回類型 3. 為什么要檢查自賦值的情況 4. 避免傳回C++類中的內(nèi)部handler 內(nèi)容八:高效C++語言,避免C++中的陷阱 1. 區(qū)別對待指針和引用 2. 為什么需要使用標準的轉(zhuǎn)型操作符 3. 不要以多態(tài)的形式處理數(shù)組 4. ++操作符的前后置區(qū)別 5. 內(nèi)存的分配與釋放機制 內(nèi)容九:如何正確的處理C++中的異常 1. 利用析構(gòu)函數(shù)避免資源泄露(智能指針) 2. 如何高效的拋出/捕獲異常 3. 為什么在構(gòu)造函數(shù)中阻止資源泄露 4. 為什么在析構(gòu)函數(shù)中要阻止異常流出 |
編寫高質(zhì)量C代碼 (3~4小時) 內(nèi)容一:什么樣的代碼是高質(zhì)量的代碼 1.理解高質(zhì)量代碼需要考慮的各種因素 2.嘗試結(jié)合各種因素編寫一個高質(zhì)量的strcpy() 3.這樣的strcpy()可能會遇到什么樣的問題 4.該如何一步步解決這些問題 內(nèi)容二:利用現(xiàn)有工具提升代碼的品質(zhì) 1.如何保證參數(shù)的合法性 2.如何提高程序的健壯性 3.如何優(yōu)化代碼,減少冗余邏輯 內(nèi)容三:如何確保代碼的安全性 1.什么樣的代碼會有安全問題 2.安全問題可能造成的危害 3.什么是緩沖區(qū)溢出,原理是什么 4.如何避免/應對緩沖區(qū)溢出 內(nèi)容四:如何檢查/避免代碼中的內(nèi)存泄露 1.內(nèi)存泄露該如何檢查 2.應對內(nèi)存泄露的方法 3.權(quán)衡,內(nèi)存泄露時應該考慮的對策 內(nèi)容五:雜項 1. 高階參數(shù)檢查 2. 局部變量不初始化的危害 |
編寫高質(zhì)量C++代碼(3~4小時) 內(nèi)容六:將代碼從C過渡到C++ 1.C++中高質(zhì)量代碼需要考慮的問題 2.C++中的內(nèi)存泄露與C中的區(qū)別 3.如何在C++中防止數(shù)組形式的內(nèi)存泄露 內(nèi)容七:C++字符串類中鮮為人知的秘密 1. 為什么有時候需要重載拷貝構(gòu)造函數(shù)/賦值運算符 2. 該怎么確定賦值運算符的返回類型 3. 為什么要檢查自賦值的情況 4. 避免傳回C++類中的內(nèi)部handler 內(nèi)容八:高效C++語言,避免C++中的陷阱 1. 區(qū)別對待指針和引用 2. 為什么需要使用標準的轉(zhuǎn)型操作符 3. 不要以多態(tài)的形式處理數(shù)組 4. ++操作符的前后置區(qū)別 5. 內(nèi)存的分配與釋放機制 內(nèi)容九:如何正確的處理C++中的異常 1. 利用析構(gòu)函數(shù)避免資源泄露(智能指針) 2. 如何高效的拋出/捕獲異常 3. 為什么在構(gòu)造函數(shù)中阻止資源泄露 4. 為什么在析構(gòu)函數(shù)中要阻止異常流出 |