編程基礎(chǔ):
主要是關(guān)于變量和語(yǔ)句。
變量:
使用變量的一般事項(xiàng):
數(shù)據(jù)認(rèn)知
輕松掌握變量定義
變量的初始化原則
作用域
持續(xù)性
綁定時(shí)間
為變量制定單一用途
數(shù)據(jù)認(rèn)知測(cè)試(32種數(shù)據(jù)類型,一個(gè)一分):
abstract data type character variable index literal
container class tree array private
structured variable local variable retroactive
container bitmap double precision
typedef lookup table referential integrity
integer boolean stack union
member data enumerated type linked list
B-tree string named constant
pointer floating point variant
value chain heap
評(píng)價(jià)自己的得分:
0-4分:新手,剛剛從學(xué)校畢業(yè)
15-19:中級(jí)程序員
20-24:專家程序員
25-29: 大師
輕松掌握變量定義:
隱式聲明:隱式變量聲明對(duì)于任何一種語(yǔ)言來(lái)說(shuō)都是最具危險(xiǎn)性的特征之一。如果使用的編程語(yǔ)言支持隱式聲明,可以這樣避免:
- 關(guān)閉隱式聲明
- 聲明全部的變量
- 遵循某種命名規(guī)則
- 檢查變量名
變量的初始化原則:
不合理的初始化數(shù)據(jù)是產(chǎn)生編程錯(cuò)誤的常見根源之一。
如何避免:
- 在聲明變量的時(shí)候初始化。
- 在靠近變量第一次使用的位置初始化
- 理想情況下,在靠近第一次使用變量的位置生命和定義該變量。
- 在可能的情況下使用final或者const.
- 特別注意計(jì)數(shù)器和累加器。
- 在類的構(gòu)造函數(shù)里初始化該類的數(shù)據(jù)成員。
- 檢查是否需要重新初始化。
- 一次性初始化具名常量;用可執(zhí)行代碼來(lái)初始化變量。
- 使用編譯器設(shè)置來(lái)自動(dòng)初始化所有變量。
- 利用編譯器的警告信息。
- 檢查輸入?yún)?shù)的合法性。
- 使用內(nèi)存訪問檢查工具來(lái)檢查錯(cuò)誤的指針。
- 在程序開始時(shí)初始化工作內(nèi)存。
作用域:
可以看作是一種衡量變量的知名度的方法, 指變量在程序內(nèi)的課件或者可引用的范圍。
使用作用域的規(guī)則:
- 使用變量引用局部化
- 盡可能縮短變量的存活時(shí)間
- 測(cè)量變量的生存時(shí)間
減小作用域的一般原則:
- 在循環(huán)開始之前再去初始化該循環(huán)里使用的變量,而不是在該循環(huán)所屬的子程序的開始處處石化這些變量。
- 直到變量即將被使用時(shí)再為其賦值。
- 把相關(guān)語(yǔ)句放到一起。
- 把相關(guān)語(yǔ)句組提取成單獨(dú)的子程序。
- 開始時(shí)采用最嚴(yán)格的可見性,然后根據(jù)需要擴(kuò)展變量的作用域。
持續(xù)性:
持續(xù)性是對(duì)一項(xiàng)數(shù)據(jù)的生命期的另一種描述。持續(xù)性具有多種形態(tài):
- 特定代碼段或子程序的生命周期(for循環(huán)中的變量)。
- 只要你允許,他就會(huì)持續(xù)下去。(new創(chuàng)建的對(duì)象)
- 程序的生命期。(全局變量)
- 永遠(yuǎn)持續(xù)。(文件或者數(shù)據(jù)庫(kù))。
為了避免對(duì)變量的生命期產(chǎn)生錯(cuò)誤的判斷,可以采取以下措施:
- 在程序中加入調(diào)試代碼或者斷言來(lái)檢查那些關(guān)鍵變量的合理取值。
- 準(zhǔn)備拋棄變量時(shí)給他們賦上“不合理的數(shù)值”。
- 編寫代碼時(shí)要架設(shè)數(shù)據(jù)并沒有持續(xù)性。
- 養(yǎng)成在使用所有數(shù)據(jù)之前聲明和初始化的習(xí)慣。
綁定時(shí)間:
把變量和它的值綁定在一起的時(shí)間。
綁定時(shí)間一般而言,綁定時(shí)間越早靈活性就會(huì)越差,但復(fù)雜度也會(huì)降低,使用具名常量要在很多方面好于使用神秘?cái)?shù)值(magic number).
總結(jié):
編碼時(shí) :使用神秘?cái)?shù)值----不推薦
編譯時(shí): 使用具名常量
加載時(shí):從注冊(cè)表,屬性文件等外部數(shù)據(jù)源中讀取數(shù)據(jù)。
對(duì)象實(shí)例化時(shí):例如在每次窗體創(chuàng)建的時(shí)候讀取數(shù)據(jù)。
即時(shí): 例如在每次窗體重繪的時(shí)候讀取數(shù)據(jù)。
為變量指定單一用途:
原則:
- 每個(gè)變量只用于單一用途。
- 避免讓代碼具有隱含含義。
- 確保使用了所有已聲明的變量。