在編寫代碼中有許多技巧,有的是程序語言實現層面的,有的是算法和數據結構方面的,類似的文章在網上已經有非常詳細的說明了,本文打算從另一個比較抽象的角度來聊聊有哪些新手程序員不知道的小技巧,有了這些技巧會讓你在日常寫代碼的過程中如虎添翼,提升工作效率。
思維層面

假設我們要做一個課程設計,對于稍微有一些編程基礎的同學來說可能一上來就寫代碼,然后反復修改。而學習軟件工程的課程之后可能會考慮先做一個需求分析,新手可能會陷入比較混亂的思路中。所以在構思一個問題時,可以考慮從最大的幾個方面出發,等大確定之后并記錄下來,再一個個慢慢展開。比如一個常見的需求:寫一個 xx 管理系統,如果思路是:用戶管理 -> 用戶數據庫結構設計 -> CRUD 邏輯 -> 界面 -> 功能分析 的話,很快就會陷入混亂,但是如果思路改變一下,如下:
- 用戶管理
- 用戶數據庫結構
- 用戶相關 CRUD 邏輯
- 功能設計
- xx 功能
- yy 功能
- 對應功能的 CRUD 邏輯
- 功能相關的數據庫結構
這樣對于問題的分析就會清晰很多,實現起來也更加不容易遇到問題。
看官方文檔

一些語言/工具的官方文檔可能是純英文的,對于英文不是非常好的程序員來說第一眼看上去不是非常友好,但是作為相關工具的開發者,其官方文檔的維護者勢必是最為了解對應產品的人,加上一般我們能看到對應文檔的工具都是開源的,在有官方背景情況下的文檔一定相比一些 xx 知道,xx 博客等有更加好的入門能力,且能涉及到一些大家博客中難以涉及到的一些比較小的細節。
如果英語水平不好的話,一定要花功夫提升自己的英語水平,這樣可以非常有效地擴展自己的知識面。
學會調試

這里說的調試不是在 "合適的位置" 寫一個 print 語句判斷一下某個變量對不對,而是對于代碼的調試。包括但不限于對性能不夠的地方進行測試和調優,對于代碼性能的分析被稱為——profiling。
profiling 工具 vs 和 gcc 都有,gcc 下的叫 gprof ,功能都是通過檢測堆棧采樣每個函數的 cpu 時間,統計代碼熱點,方便程序員有針對性的優化代碼。
進行代碼調試,如果自己的代碼具有模塊性能提升調試的效率,模塊間注意去掉循環依賴,這樣所有模塊會自然分層,遇到問題的時候可以一層一層往下調試,對于調試而言,建議如下:
訓練可以這樣。寫一個稍微有點規模的項目,大于 2000 行代碼的那種,然后嘗試把它分成小模塊,每個模塊一個文件,每個文件不超過 300 行(或者 500 行,有的語言可能本身更啰嗦一點),每行不超過 80 個字符。每個模塊盡量只做一件小事情。注意讓模塊之間沒有循環依賴。給每個模塊寫單元測試。然后,寫出來這個 project 之后,把模塊之間的依賴關系畫個圖(像這個:Go standard library DAG visualization),拿著這個圖給你的一個(同樣高數沒有問題的)朋友看,讓他參照著這個圖去讀你的源代碼,看他能不能讀懂你的代碼要做什么,是怎么做的。如果他能讀懂,說明你模塊分得非常好。如果他讀不懂,可以具體看他讀哪個模塊讀不懂了,研究一下有沒有更好的模塊化方式或者寫法。——如何高效地增強編程(特別是debug)能力? - h8liu
看完這篇文章的你可以在下一次寫代碼的時候嘗試一下~
本文作者:Nova Kwok