鐵人賽 多關心你的程式 - Jian-Min-Huang/tech-note GitHub Wiki
前言
說是要關心,那要怎麼關心呢?我想這個問題可以分兩個層面來看,觀察他靜態時的樣子也關心他動態的樣子。更甚者,找人一起關心。
靜態程式碼分析
一般來說,我想你當然希望自己該有的有、該直的直、該彎的彎、該挺的挺、該大的大,咳咳,離題了 (笑)
所以說首先就是 Coding Style,像是什麼 checkstyle 啦,xxlint 都算。
這個通常會縫合在特定時間點執行如 project package or git commit hook。
然後像是大公司會有公開自己的 checkstyle 範本,很多人都是拿大公司的回來改一改變自己的。
第二部分是分析你的程式碼寫法,看看有沒有可能存在缺陷,例如 PMD 和 FindBugs。
另外比較特別想介紹的是一個叫做 SonarQube,這是一個程式碼品質管理系統。
會跟你的 SCM (Source Code Management) 還有 CI (Continuous Integration) 整合在一起,無論是事先檢測缺陷或是事後檢視報表,這個無疑是一個持續提高專案程式碼品質的利器。
動態指標檢視
別的不說,最少最少對於已知會印出錯誤日誌的地方,我們需要檢視及除錯,這個可以參考https://ithelp.ithome.com.tw/articles/10218136。
第二部分是運行期間的指標,看看 CPU 會不會過高或是有不正常峰值的出現,記憶體的佔用與GC的狀況,執行緒的數量及有沒有死結的產生。
分布式系統的指標監控我們會在後面講到,這個也是目前 DevOps 火熱的議題。
不過以 Java 單體應用程式來說,你可以透過 jConsole 或是 Java Visual VM 這些工具來看本地的程序,如果是遠程的你要用 JMX 協議來連線。
下面是 jConsole 的截圖
大家來關心
就是一不小心就會吵架的 code review 啦,哈哈。多半現在都有整合在 SCM 裡頭,像 GitHub 發 PR,GitLab 發 MR 都有 code review & request change 的過程。
只能說畢竟還是有程式檢查不出來的東西,而且畢竟是人的團隊,有些規則也許是跳脫常理但需要遵守的 (笑)
Agile 裡頭有一個 Pair Programming 跟這個有關,也是一個酷炫的東西。
最後提一下,前陣子有人翻譯 Google 是如何進行 Code Review 的文章,這邊放上https://medium.com/@ryanyang1221/%E8%AE%93-google-%E6%95%99%E4%BD%A0-code-review-be251d4d81b4。
今天是第十一天,不知不覺也過1/3了,加油加油。
About Me
Jian-Min Huang
wide range skill set backend engineer
Research, Architecture, Coding, DB, Ops, Infra.
mainly write Java but also ❤️ Scala, Kotlin and Go