コード品質の向上(その2) ~ Visual Studio 2012 ソリューションシナリオ
<< ”Visual Studio 2012 ソリューションシナリオ" では、開発現場における様々な課題を Visual Studio 2012 によってどのように解決できるのかを紹介いたします。>>
このソリューションシナリオでは、「コード品質の向上 ~その1~」の後編として、ソースコードの品質を向上し、よりメンテナンス性の高いコードを書くための Visual Studio 2012 の支援機能を紹介します。
プラクティス3: 冗長なコードはリファクタリングによりシンプルなコードにしよう。
Visual Studio 2012 では、「コードクローン分析(コード複製分析)」機能により、プロジェクトにおいて点在している「似た」コードを素早く特定します。これにより、リファクタリング対象となるコードを効率的に見つけることが可能です。
例えば下記は前述した C# のReversi アプリケーションにおいてコード複製の分析を行った結果です。
この中で「弱い一致」を示すコードが2か所発見されており、そのうちの一つに関してコードの内容を比較したところ、該当箇所約30行のうち、色がついていない7行については全く一致しており、またその前後にある何行かのコード(赤色、もしくは緑色の強調がされている行)においても若干の違いがあるものの、類似のコードとなっている、という分析結果が示されています。
このようなコードに対して、ロジック的に問題がないか確認を取りながら、リファクタリング可能なコードはメソッドとして抽出し共通化する、といった作業を行うことで、コードをよりシンプルに保つことが可能になります。
また、異なるアプローチとして、選択したコードに関して同様のコードがないかを確認する、といった使用も可能です。
あるコードを修正しようという際に、似たようなコードがソリューション内に存在しないかどうかを事前に確認することで、同様の修正を行う必要がないかどうか、あるいはそれらの箇所をまとめてリファクタリングし、シンプルなコードにできないかを検討することが可能になります。
プラクティス4: 実行時のパフォーマンスの観点からもコードのチェックをしよう。
Visual Studio 2012 においては、ユーザーが行うであろう操作シナリオに基づいて実際にアプリケーションの操作を行い、その際の関数(メソッド)呼び出しの関連性や、各関数にて使用しているCPU、メモリリソースの測定を行うことが可能です。
例えば、下記は 「Huo Chess」 というコードに対してパフォーマンス分析を行った結果です。
関数の呼びたし回数に関する詳細なデータを取得する “インストルメンテーション” によって、アプリケーション実行時に実際に呼び出された関数のデータを取得し、また CPU の使用率をグラフとして表示しています。
パフォーマンスチューニングを行う際には、開発者がこれまでの経験や知識などを頼りにチューニングを進める方法もありますが、実際にチューニングを行うべき箇所(パフォーマンス上のボトルネックとなっている箇所)を明確に見つけ出すことは容易ではありません。
Visual Studio のパフォーマンス分析機能では、アプリケーション実行において実際にボトルネックとなった箇所を「ホットパス」として見つけ出し、わかりやすく表示してくれるので、チューニングを行う際の指針として活用が可能です。
※ 図中で、関数名の先頭に “炎” のマークがついている呼び出しが 「ホットパス」。
今回は、コード品質の向上に関するプラクティスと、Visual Studio 2012 の支援機能を紹介しました。
ソリューションシナリオには、以下のシナリオがあります。
それでは!
(岩出)