最近接手了公司另一個專案,熟悉業務和程式碼苦不堪言。
我接手一個新專案,有個習慣,就是看結構,看資料庫,搜程式碼。
其中搜程式碼是我個人這些年不知不覺形成的癖好,我下面給大家展示下這個小癖好。
我面對一個到手的新專案,會主動去搜尋一些關鍵詞,讓我對這個專案有個整體健康的認識。
比如搜尋了printStackTrace(),目的是為了看這個專案中有多少地方直接列印了堆疊。
不搜還好,一搜,沃日,這卷軸,是奏響我悲痛的序章,竟然到處都是這種列印,而且是release分支。
我抽點了一些,看看具體是怎麼寫的,比如下面這樣。
再比如下面這樣,我反正長見識了,也可能只是我不會。
比較典型的可能是下面這樣,我以前就見過不少次,堆疊和log混合雙打。
還無意間發現了這樣的列印方式,log、堆疊、throw,縱享絲滑,一氣呵成,讓我們一起搖擺,哎,一起搖擺哎~
最後這種,我懷疑是正在看文章的很多人就幹過的,入參列印JSON,舒爽的做法,極致的坑爹。
我公司這個更酸爽,用的還是FastJson。
寫到這裡,我可以告訴大家我寫這篇文章的初衷不是我想教大家學習,因為這就是常識的東西。
我是因為今天的一件事感到意外。
我同組的工作了12年的Java工程師,做過非常多的專案,也確實很有經驗且有責任心的同事。
他也寫過這樣的程式碼,因為我用IDEA檢視了提交人,其中就有他的貢獻。
另外,我有把上面log+堆疊+throw的寫法給他看看,他的回答非常理所當然。
「這有問題嗎,沒報錯啊」
我當場石化了,然後尷尬的笑笑就聊別的話題了。
講這個小插曲的原因是什麼,一葉知秋,從他身上我能斷定,這樣的工程師比比皆是。
幹了這麼多年,連個基本的紀錄檔規範都沒有概念,哪怕不看什麼阿里編碼規範,至少對基礎性的東西有個瞭解吧。
所以,我專程又把以前分享過給大家的阿里巴巴《Java開發手冊(黃山版)》掏出來,找出了裡面紀錄檔規範著重說明的這部分。
正確的列印紀錄檔方式如下:
再看這個,第8條,禁止直接列印堆疊。
第9條,正確的列印異常紀錄檔的規範,我本人也一直都是第9條這種方式列印的。
另外,第10條說的很清楚,為什麼不要在log裡面用JSON轉換工具,說簡單點就是可能會報錯,然後導致業務不走了。
一個紀錄檔列印本來是輔助排查問題用的,結果影響了正常業務流程,你說這是不是隱患。
而且,還告訴你了要如何列印入參,就是用toString()方法就行。
看看,寫得多好,但是有多少人真的看了,都像你買的網課一樣存在那裡擺爛了吧。
希望大家認真看一看,雖然簡單,可很多程式設計師就差這麼點意思,還是要養成好習慣哦。
這個黃山版的阿里Java開發手冊,我重新放到git了,如果沒有,自己去下吧。
喜歡請點贊關注↓↓↓,持續分享乾貨哦!