王银《编程的智慧》
編程是一種創造性的工作,是一門藝術
?
一:反復推敲代碼
反復提煉,剔除垃圾
二:寫優雅的代碼
枝丫分明,樹狀代碼
三:寫模塊化的代碼
- 避免寫太長的函數
- 制造小的工具函數(編譯時會內聯/inline)
- 每個函數只做一件簡單的事情
- 避免使用全局變量和類成員(class member)來傳遞信息,盡量使用局部變量和參數
四:寫可讀的代碼
- 使用有意義的函數和變量名字
- 局部變量應該盡量接近使用它的地方(清晰易讀)
- 局部變量名字應該簡短
- 不要重用局部變量(易讀)
- 把復雜的邏輯提取出去,做成“幫助函數”
- 把復雜的表達式提取出去,做成中間變量
- 在合理的地方換行(不要讓換行干擾語義理解)
五:寫簡單的代碼
- 避免使用自增減表達式(i++,++i,i–,–i):讀和寫這兩種完全不同的操作不能混淆纏繞
- 永遠不要省略花括號。
- 合理使用括號,不要盲目依賴操作符優先級
- 避免使用continue和break
六:寫直觀的代碼
如果有更加直接,更加清晰的寫法,就選擇它,即使它看起來更長,更笨,也一樣選擇它。
七:寫無懈可擊的代碼
if雙分支,窮盡可能,滴水不漏
八:正確處理錯誤異常
- 務必處理異常返回值
- 盡量在異常出現的當時就作出處理
- 異常捕獲應該盡量具體,不可寬泛
- try { … } catch里面,應該包含盡量少的代碼
九:正確處理null指針
- 盡量不要產生null指針(盡量不要用null來初始化變量,函數盡量不要返回null)
- 不要catch NullPointerException
- 不要把null放進“容器數據結構”里面(如果你真要表示“沒有”,那你就干脆不要把它放進去;你可以指定一個特殊的,真正合法的對象,用來表示“沒有”)
- 函數調用者:明確理解null所表示的意義,盡早檢查和處理null返回值,減少它的傳播(null在不同的地方可能表示不同的意義)
- 函數作者:明確聲明不接受null參數,當參數是null時立即崩潰
- 使用@NotNull和@Nullable標記
- 使用Optional類型(把“檢查”和“訪問”這兩個操作合二為一,成為一個“原子操作”)
十:防止過度工程
先可用后重用、擴展
- 先把眼前的問題解決掉,解決好,再考慮將來的擴展問題。
- 先寫出可用的代碼,反復推敲,再考慮是否需要重用的問題。
- 先寫出可用,簡單,明顯沒有bug的代碼,再考慮測試的問題。
原文:編程的智慧-王垠
總結
- 上一篇: Vue-pdf实现在线预览PDF文件
- 下一篇: it方面的证书 计算机软件,计算机及IT