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