エンジニアにとって一度書いたソースコードを改善するリファクタリングは欠かせないものです。特に中長期的に修正や拡張が繰り返されるような場合、書いた本人だけでなく、ほかのエンジニアであっても理解できるようにしておくことはとても重要。
万が一怠ってしまうと、それはもう目の当てられない状況になることもあります……。そうならないためにも、常日頃からリファクタリングという作業をルーチンとして取り入れたいところです。そうしたリファクタリングを少しでも効率化できるツールをいくつかご紹介。
もちろん、事前にデバッグしておくことも重要ですので、後半ではデバッグツールもいくつかあわせてご紹介します。日々、コードレビューに時間を取られているような方にとっても作業を円滑にするうえで参考になると思いますので、是非ご一読してみてください。
リファクタリングツールまとめ
grunt-plato
https://github.com/jsoverson/grunt-plato
HTMLでレポートを生成してくれるGruntプラグインが「grunt-plato」です。主にJavaScriptのソースコードを分析し、ソースコードの品質を数値化して定量的に評価してくれます。
ソースコードの行数
循環的複雑度
ファンクションポイント法
ソースコードの行当たりのバグ数
コード網羅率
などなど。
この品質レベルを参考にチームでの基準を設けて運用することで、コードレビューの負担を軽減するといった活用もできそうです。
NetBeans IDE
PHP向けにコード補完やコード・ナビゲーション機能などが搭載された、テキストエディタ(厳密に言うと統合開発環境)です。要素を全体で検索し、使用状況や未使用の変数を見つけ出すことも可能。
これらの機能を活用することでPHPのリファクタリングも円滑にすることができますし、デバッグ作業にも有効なのではないでしょうか。ちなみに、その他の機能としてはプロジェクト管理やビジュアルエディタ機能もあるので、高機能エディタとしての一面も兼ね備えているのが「NetBeans IDE」です。
Scientist 1.0
https://github.com/github/scientist
Ruby向けにコードパスをリファクタリングするツールとして、今年2月に登場したのが「Scientist 1.0」です。書き直したコードを比較し、実行時間の測定などを行い結果を記録。これによって、例えば重要なコードの書き直しや置き替えが低リスクでできるようになりました。
autopep8
https://pypi.python.org/pypi/autopep8
PythonにはPEP8というオフィシャルのコーディングスタイルがあります。「autopep8」は、そのPEP8に沿ったコーディングができているかを、vimを使って自動的にチェックし修正できます。ちなみに自動修正になるため、使用する際はどこが修正されたかを管理しておくことをオススメします。
リファクタリングの参考にしたい良記事
今日から始められるリファクタリング10選 (1)
http://qiita.com/nunulk/items/2323b0c30a2cbe5fdb0c
「リファクタリング—プログラムの体質改善テクニック」を参考に、簡単かつ実践的なテクニックを10個ピックアップした内容となっています。主なテクニックとしては以下。
1. メソッドの抽出
2. 一時変数のインライン化
3. アルゴリズムの取り替え
4. 条件記述の分解
5. 条件記述の結合
6. 重複した条件記述の断片の統合
7. ガード節による入れ子条件記述の置き換え
8. 引数の追加
9. 問い合せと更新の分離
10. 例外によるエラーコードの置き換え
汚コードグランプリ!秀逸な汚コードにまみれた解答臭をご覧あれ #逆リファクタリング
https://codeiq.jp/magazine/2015/02/21347/
まさに目も当てられないような汚いコード(汚コード)をあえて作成するというユニークな内容。冗談のような汚コードばかりですが、何が汚いコードなのかを明確に把握することができるはず。
また、これをもとに綺麗なコードに書き換えるといったゲーミング感覚でも活用できるのではないでしょうか。
デバッグツール
ブラウザに搭載されたGoogle Chrome Developer Tools、Firebug、F12ツール
もはや皆さんご存知だと思いますが、ブラウザに標準搭載された各種ツールはデバッグに有効。Chromeであれば「Google Chrome Developer Tools」、Firefoxであれば「Firebug」、IEであれば「F12ツール」です。それぞれお使いのブラウザに標準で搭載されているので使わない手はないでしょう。
Xdebug
PHPのデバッグツールとしては定番のツールが「Xdebug」です。バグの発見や修正がより効率的になり、var_dump()関数を整形してくれたり、エラーが出た時に原因を表示してくれたりと、デバッグの際には重宝する機能を搭載。
まとめ
リファクタリングはテクニックとも言われていますが、テクニックを身につけるのはもちろん、自信がなければ今回ご紹介したツールなども使ってカバーするのも一つの手。また、リファクタリングの負担が大きくならないよう汚コードを書かない技術はもちろん、デバッグツールなども活用して綺麗なコードを書きましょう!