鐵人賽 多關心你的程式 - 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 的截圖 jconsole1 jconsole2 jconsole3

大家來關心

就是一不小心就會吵架的 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

http://github.jianminhuang.cc

http://linkedin.jianminhuang.cc

http://note.jianminhuang.cc

[email protected]