1. 程式人生 > >《代碼大全》閱讀筆記-12-基本數據類型

《代碼大全》閱讀筆記-12-基本數據類型

一種可能 自定義類 pos 工作 數字 c代碼 使用字符串 ron 重定義

核對表:基本數據類型

數值概論

  • 代碼中避免使用神秘數值
  • 代碼考慮了除零錯誤了嗎?
  • 類型轉換很明顯嗎?
  • 如果在一條語句中存在兩個不同類型的變量,那麽這條語句會想你期望的那樣求值嗎?
  • 代碼避免了混合類型比較嗎?
  • 程序編譯時沒有警告信息嗎?

整數

  • 使用整數除法的表達式能按預期的那樣工作嗎?
  • 整數表達式避免整數溢出問題嗎?

浮點數

  • 代碼避免了對數量級相差巨大的數字做加減運算嗎?
  • 代碼系統地阻止了舍入錯誤的發生嗎?
  • 代碼避免對對浮點數做燈亮比較嗎?

字符和字符串

  • 代碼避免使用神秘字符串和神秘字符了嗎?
  • 使用字符串時避免了off-by-one錯誤了嗎?
  • C代碼吧字符串指針和字符數組區別對待了嗎?
  • C代碼遵循了把字符串聲明為CONTANT+1長度了嗎?
  • C代碼在適當的時候用字符數組來代替指針了嗎?
  • C代碼吧字符串初始化為NULL來避免無終端的字符串了嗎?
  • C代碼用strncpy()代替strcpy()嗎?strncat()和strncmp()呢?

布爾變量

  • 程序用額外的布爾變量來說明條件判斷了嗎?
  • 程序用額外的布爾變量來簡化條件判斷了嗎?

枚舉類型

  • 程序用枚舉類型而非具名常量來提高可讀性、可靠性、和可修改性了嗎?
  • 當變量的用法不能僅用true和false表示的時候,程序用枚舉類型取代布爾變量嗎?
  • 針對枚舉類型的測試檢測了非法數值嗎?
  • 把枚舉類型的第一項條目保留為“非法“了嗎?

具名常量

  • 程序用具名常量而不是神秘數值來聲明數據和表示循環界限了嗎?
  • 具名常量的使用一致嗎?——沒有在有些位置使用具名常量又在其它位置使用文字量?

數組

  • 所有的數組下標都沒有超出數組邊界嗎?
  • 數組引用沒有出現off-by-one錯誤嗎?
  • 所有多維數組的下標的順序都正確嗎?
  • 在嵌套循環裏,把正確的變量用於數組下標來避免循環下標串話了嗎?

創建類型

  • 程序對每一種可能變化的數據分別采用不同的類型嗎?
  • 類型名是以該類型所表示的顯示世界實體為導向,而不是以編程語言類型為導向嗎?
  • 類型名的描述性足以強,可以幫助解釋數據聲明嗎?
  • 你避免重新定義預定義類型嗎?
  • 與簡單的重定義一個類型相比,你考慮過創建一個新類嗎?

要點

  • 使用特定的數據類型就意味著要記住適用於各個類型的很多獨立的原則。用本章的核對表來確認你已經對常見問題做了考慮。
  • 如果你的語言支持,創建自定義類型會使得你的程序更容易修改,並更具有自描述性
  • 當你用typedef或者其等價方式創建了一個簡單類型的時候,考慮是否更應該創建一個新的類

《代碼大全》閱讀筆記-12-基本數據類型