分辨程序員的新手程度,就從debug開始

分辨程序員的新手程度,就從debug開始

原文地址:http://baijiahao.baidu.com/s?id=1599591098632507456&wfr=spider&for=pc

作爲一個新手,自然是多學習一些技巧,才能讓自己的技能日漸增長呀!畢竟技多不壓身,多學幾個技巧,總能爲工作增加不少便捷。

0.重構是程序員的主力技能。
1.想要提升腦容量,那就開始查看工作日誌。
2.先用profiler調查,才能開始談優化。
3.註釋貴精不貴多。
4.普通程序員+google=超級程序員。
5.單元測試總是合算的。
6.不要先寫框架再寫實現。最好反過來,從原型中提煉框架。
7.代碼結構清晰,其它問題都不算事兒。
8.好的項目作風硬派,一鍵測試,一鍵發佈,一鍵部署; 爛的項目生性猥瑣,口口相傳,不立文字,神神祕祕。
9.編碼不要畏懼變化,要擁抱變化。
10. 編程之事,隔離是方向,起名是關鍵,測試是主角,調試是補充,版本控制是後悔藥。
11. 一行代碼一個兵。形成建制纔能有戰鬥力。單位規模不宜過大,千人班,萬人排易成萬人坑。
12. 重構/優化/修復Bug,同時只能作一件。
13. 簡單模塊注意封裝,複雜模塊注意分層。
14. 人腦性能有限,整潔勝於雜亂。讀不懂的代碼,嘗試整理下格式; 不好用的接口,嘗試重新封裝下。
15. 迭代速度決定工作強度。想多快好省,就從簡化開發流程,加快迭代速度開始。
16. 忘掉優化寫代碼。過早優化等同惡意破壞;忘掉代碼作優化。優化要基於性能測試,而不是糾結於字裏行間。
17. 最好的工具是紙筆;其次好的是markdown。
18. 最有用的語言是English。其次的可能是Python。
19. 資源、代碼應一道受版本管理。資源匹配錯誤遠比代碼匹配錯誤更難排查。
20. 不要基於想象開發, 要基於原型開發。原型的價值是快速驗證想法,幫大家節省時間。
21. 序列化首選明文文本 。諸如二進制、混淆、加密、壓縮等等有需要時再加。
22. 編譯器永遠比你懂微觀優化。只能向它不擅長的方向努力。
23. 至少半數時間將花在集成上。時間,時間,時間總是不夠。
24. 與主流意見/方法/風格/習慣相悖時,先檢討自己最可靠。
25. 出現bug主動查,不管是不是你的。這能讓你業務能力猛漲、個人形象飆升。
26. 不知怎麼選技術書時就挑薄的。起碼不會太貴,且你能看完。
27. Log要寫時間與分類。並且要能重定向輸出。
28. 註釋是稍差的文檔。更好的是清晰的命名。讓代碼講自己的故事。
29. code review最好以小組/結對的形式。對業務有一定了解,建議會更有價值(但不絕對)。而且不會成爲負擔。管理員個人review則很容易成team的瓶頸。

老鳥和新手的一個很大區別來自於debug的能力。

0.從高層往底層找錯。

很多新手遇到程序執行結果不對(尤其是圖形程序員),先認爲是機器毛病(浮點精度、硬件故障),然後認爲是驅動有錯,再認爲是系統有錯,最後纔開始排查自己的程序。其實99%的情況下是自己程序有錯,然後那1%裏面的99%是系統有bug,再接着那1%裏的99%是驅動有bug,最後到硬件問題,已經微乎其微了。應該從高層往底層查,而不是反過來。

1.科學方法

debug一般來說是知道現象,但原因未知。這一點和很多自然科學的情況一樣,所以完全也可以用科學的方法來:

提假說->根據假說做出預言->做實驗肯定或否定預言。

對應於debug,那就是假設是某個地方有問題,那麼推斷它一定會導致除了你看到的現象之外的其他現象,運行程序看你的推斷是否成立。
掌握這個方法後debug不在變成瞎找瞎試,而是有跡可循有系統可依賴的方法。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章