こんにちは、サーバーアプリケーション用の Java プログラムを書いている持田です。
2019/01/10 に direct 開発部で合宿をおこなった際に、 API サーバーのリファクタリングを集中的に行いました。
普段は機能開発でリファクタリングには手が回らない状態ですが、 合宿で徳島および東京のエンジニアが一同に介するよい機会で何かクリエイティブなことをしようと考えた結果、 古くからあったコードにコード規約にあっていないものが散見されているものの 普段の忙しさから全く手付かずであったリファクタリングを行うこととしました。
主なリファクタリングの内容
final
になっていないフィールドおよびパラメーター/ローカル変数にfinal
を付与する- 投げていないのに
throws Exception
となっている箇所を実装にあった例外に修正する isPresent
を実施していないのにOptional.get
している箇所の修正- 念のために書いておきますが、事前にデータベース中の存在のチェックを行っており、コンテキスト的にバグではないものです
修正方法
これらのチェック内容ですが、 IntelliJ IDEA の機能を使って修正していきました。
実行方法ですが、
(1) Analyze > Inspect Code を選び、インスペクションダイアログを表示します

(2) Inspection scope を Whole project に指定して実行します

(3) インスペクションの結果から対象の警告を選んで 黄色の電球のアイコンがあるボタンをクリックして修正します

機械的におこなえる作業なのですが、いくつかのクラスで機械的に修正できない箇所があったりするので、 CIを回しながら少しずつ行っていきます。
今後
今後ですが、警告の数が少なくなるので、少しは警告が目につくようになってよりインスペクションの効果が高められると考えています。 また、今は CI で回しておりません(それも問題ではありますが、そこは置いておきます)が、 FindBugs/SpotBugs/ErrorProne などの静的解析ツールも取り入れて より高い品質のコードにしていきたいと思います。
L is B では Java でサーバーアプリケーションを書いていきたいエンジニアを募集しております。L is B の採用ページよりお申し込みください。