コード品質の向上(その2) ~ Visual Studio 2012 ソリューションシナリオ

<< ”Visual Studio 2012 ソリューションシナリオ" では、開発現場における様々な課題を Visual Studio 2012 によってどのように解決できるのかを紹介いたします。>>

image_thumb29

 

このソリューションシナリオでは、「コード品質の向上 ~その1~」の後編として、ソースコードの品質を向上し、よりメンテナンス性の高いコードを書くための Visual Studio 2012 の支援機能を紹介します。

 

 


プラクティス3: 冗長なコードはリファクタリングによりシンプルなコードにしよう。


Visual Studio 2012 では、「コードクローン分析(コード複製分析)」機能により、プロジェクトにおいて点在している「似た」コードを素早く特定します。これにより、リファクタリング対象となるコードを効率的に見つけることが可能です。

例えば下記は前述した C# のReversi アプリケーションにおいてコード複製の分析を行った結果です。

この中で「弱い一致」を示すコードが2か所発見されており、そのうちの一つに関してコードの内容を比較したところ、該当箇所約30行のうち、色がついていない7行については全く一致しており、またその前後にある何行かのコード(赤色、もしくは緑色の強調がされている行)においても若干の違いがあるものの、類似のコードとなっている、という分析結果が示されています。

image

このようなコードに対して、ロジック的に問題がないか確認を取りながら、リファクタリング可能なコードはメソッドとして抽出し共通化する、といった作業を行うことで、コードをよりシンプルに保つことが可能になります。

 

また、異なるアプローチとして、選択したコードに関して同様のコードがないかを確認する、といった使用も可能です。

image_thumb[6]

 

あるコードを修正しようという際に、似たようなコードがソリューション内に存在しないかどうかを事前に確認することで、同様の修正を行う必要がないかどうか、あるいはそれらの箇所をまとめてリファクタリングし、シンプルなコードにできないかを検討することが可能になります。

image_thumb[9]

 

 

 


プラクティス4: 実行時のパフォーマンスの観点からもコードのチェックをしよう。


Visual Studio 2012 においては、ユーザーが行うであろう操作シナリオに基づいて実際にアプリケーションの操作を行い、その際の関数(メソッド)呼び出しの関連性や、各関数にて使用しているCPU、メモリリソースの測定を行うことが可能です。

 

例えば、下記は 「Huo Chess」 というコードに対してパフォーマンス分析を行った結果です。

関数の呼びたし回数に関する詳細なデータを取得する “インストルメンテーション” によって、アプリケーション実行時に実際に呼び出された関数のデータを取得し、また CPU の使用率をグラフとして表示しています。

image_thumb[14]

 

 

パフォーマンスチューニングを行う際には、開発者がこれまでの経験や知識などを頼りにチューニングを進める方法もありますが、実際にチューニングを行うべき箇所(パフォーマンス上のボトルネックとなっている箇所)を明確に見つけ出すことは容易ではありません。

Visual Studio のパフォーマンス分析機能では、アプリケーション実行において実際にボトルネックとなった箇所を「ホットパス」として見つけ出し、わかりやすく表示してくれるので、チューニングを行う際の指針として活用が可能です。

 

image_thumb[18]

 

 

※ 図中で、関数名の先頭に “炎” のマークがついている呼び出しが 「ホットパス」。

 

 

今回は、コード品質の向上に関するプラクティスと、Visual Studio 2012 の支援機能を紹介しました。

 

ソリューションシナリオには、以下のシナリオがあります。

受け入れテストのリスクコントロール

チーム開発における単体テストの実践

手動テストの品質向上

コード品質の向上 ~ その1 ~

コード品質の向上 ~ その2 ~

 

 

それでは!

岩出