L is Bエンジニアブログ

ビジネス用メッセンジャーdirectのエンジニアによるブログ

LisBエンジニアブログ

ビジネスチャットdirectのエンジニアブログ

開発合宿でリファクタリングを行いました

こんにちは、サーバーアプリケーション用の Java プログラムを書いている持田です。

2019/01/10 に direct 開発部で合宿をおこなった際に、 API サーバーのリファクタリングを集中的に行いました。

普段は機能開発でリファクタリングには手が回らない状態ですが、 合宿で徳島および東京のエンジニアが一同に介するよい機会で何かクリエイティブなことをしようと考えた結果、 古くからあったコードにコード規約にあっていないものが散見されているものの 普段の忙しさから全く手付かずであったリファクタリングを行うこととしました。

主なリファクタリングの内容

  • final になっていないフィールドおよびパラメーター/ローカル変数に final を付与する
  • 投げていないのに throws Exception となっている箇所を実装にあった例外に修正する
  • isPresent を実施していないのに Optional.get している箇所の修正
    • 念のために書いておきますが、事前にデータベース中の存在のチェックを行っており、コンテキスト的にバグではないものです

修正方法

これらのチェック内容ですが、 IntelliJ IDEA の機能を使って修正していきました。

実行方法ですが、

(1) Analyze > Inspect Code を選び、インスペクションダイアログを表示します

Analyze から Inspect Code を選ぶ
Analyze > Inspect Code

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

Inspection Scope を Whole Project に指定する
Inspection Scope を Whole Project に指定する

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

fix button
fix ボタンで解決する

機械的におこなえる作業なのですが、いくつかのクラスで機械的に修正できない箇所があったりするので、 CIを回しながら少しずつ行っていきます。

今後

今後ですが、警告の数が少なくなるので、少しは警告が目につくようになってよりインスペクションの効果が高められると考えています。 また、今は CI で回しておりません(それも問題ではありますが、そこは置いておきます)が、 FindBugs/SpotBugs/ErrorProne などの静的解析ツールも取り入れて より高い品質のコードにしていきたいと思います。


L is B では Java でサーバーアプリケーションを書いていきたいエンジニアを募集しております。 Twitter等で僕(@mike_neck)にメンション/DMしていただくか、 L is B の採用ページよりお申し込みください。