今天是程序猿的節日,我從早到晚都在調試,雖然解決問題不涉及複雜的技術,但是整個調試過程值得說一說。
遇到的問題是這樣的:
點擊界面上的item後,彈出了界面,不過,界面上的checkbox消失了,不僅如此,doublespinbox的上下剪頭也消失了;
一開始我懷疑是創建界面的函數出了問題:爲了省事,我採用工廠模式創建界面,試了三次,排除了這個原因;
然後,擔心是不是主界面在堆區創建,導致界面缺損,然後我把類似程序的主界面也放到堆區創建,界面玩好,排除;
擔心不知道什麼原因造成checkbox隱藏,就在界面彈出時顯式調用show()函數,仍然沒有checkbox的影子;
這樣過了大半天,我突然想到,是不是樣式表出了問題,觀察了一下其他的界面,也沒有checkbox控件,然後,就基本上鎖定是樣式表的問題了;
最後發現是類名改變後,樣式表中某些字段沒有隨之改變,導致某些控件看不到了;
一開始,我會擔心是自己的代碼出了問題,然後擔心所有的改動是否造成影響,比如把界面從棧區移到堆區等,直到最後,觀察到所有界面都缺少checkbox後,纔想到樣式表可能出問題;
後續,在查找原因之前,要收集足夠多的信息,否則很容易被頭腦中的想法帶偏。
另外,經驗仍顯不足,頭腦中冒出來的想法大部分都是代碼相關,而忘記了這可能是代碼以外的問題引發。
先蒐集足夠的信息,然後再動手去做,這樣會輕鬆得多。