為什麼程式要了解思維的障礙,並要練習有意識的加以克服?這裡舉乙個實際發生的問題。
寫**像寫作一樣,有時思如泉湧,順著思路就把一段**寫得有模有樣。
下面是乙個狀態碼檢查的例子(這種寫法本身並不嚴謹,但這裡要討論是乙個更為嚴重的問題.):
typedef enum state_item;
// state為獲得的狀態
if (state_a & state)
else if (state_b & state)
else if (state_c & state)
這樣很自然就有了乙個模型state & state就可以判斷是不是當前這個狀態。
順著前面的思路,就有了:
if (state_default & state)
一切看起來都合情合理,程式設計師這時往往是很難會想到要回頭檢查的(至少我是這樣)。於是乙個bug就在不久之後被發現了! 因為state_default & state永遠為0!
而解決方案有兩個: 1.將設計用圖形化的先表現出來,即使只是在紙上畫一下。2.**走查,特別注意邊界條件,可以是自己回頭查一下,也可以類似結對程式設計一樣,請同伴幫助走查。但最起碼的是,程式設計師要意識到這種問題的存在。這就是本文的目的。
思維的慣性
我們經常說要破除思維定勢。避免思維慣性。這個想法是非常對的。但事實上是非常難做到的,由於大腦研究發現。人在使用眼睛看東西時。並非把全部的資訊都進行處理,僅僅有大約10 的資訊是新的,其它的資訊都是補全的。人一方面須要這樣的資訊 抽象 自己主動補償來加速腦袋cpu的處理速度。但還有一面這樣的處理機制又...
「習慣性思維」引起的血案
好久沒有更新了,一客戶因為it規劃問題,需要將citrix伺服器遷到新的域,citrix服 務器需要重新配置。但是當我重新配置完站點後,發現無論如何都登入不了。錯誤截圖 我按照傳統的思路來解決問題,1 檢視伺服器日誌 2 懷疑問題有可能出現在域驗證。我就一直糾結在這邊,在這一塊上一直在測試。因為遷域...
「習慣性思維」引起的血案
好久沒有更新了,一客戶因為it規劃問題,需要將citrix伺服器遷到新的域,citrix服 務器需要重新配置。但是當我重新配置完站點後,發現無論如何都登入不了。錯誤截圖 我按照傳統的思路來解決問題,1 檢視伺服器日誌 2 懷疑問題有可能出現在域驗證。我就一直糾結在這邊,在這一塊上一直在測試。因為遷域...