ネイティブ開発するうえで役立つリファクタリングツール紹介
この記事は、神戸電子専門学校 ゲーム技研部 Advent Calendar 2024の20日目の記事です。
はじめに
ゲーム開発をしていくうえで果たしてこのコードはよいコードなのだろうか…と悩んだことはありませんか?
他人に確認してもらうにしても全ソースに対して詳細に確認してもらうなんてことはさすがに無理があります。
ならその確認を一定の条件を定めてツールにやってもらおう、という試みです。
基本的に後輩たちに向けたものなので、
・比較的楽に導入/試行ができる
・C++でのネイティブゲーム開発
といった前提でやっていきます。
VisualStudioパフォーマンスプロファイラー
Visual Studio標準搭載の機能なので簡単に実践できます。
大まかにできることとして、
- CPU 使用率
- メモリ使用量
- インストルメンテーション(呼び出しの回数/時間の収集)
- ファイル I/O(ファイルの読み取り/書き込み情報)
- GPU 使用率
等を調べることができます。
使用例として、処理にかかった時間のグラフを表示しています。
ボトルネックがどこか一目でわかりやすくなっています。
詳細は公式リファレンスを見ることをおすすめします。
SourceMonitor
続いて、ソースコードそのものの品質を評価するツールです。
複雑度、ネストの深さ、コメント割合などを把握できます。
自分なりのルールを設定しておくとコードに一貫性ができて他人が見やすくなります。
このツールの導入により、私のコードは
- 複雑度 26->10
- ネストの深さ 8->5
まで改善できました。
余談ですが、とある1年生チーム作品の複雑度は200くらいありました。恐ろしいです。
SourceTrail
ソースの相互関係を図式的に可視化するツールです。
スパゲッティコードや神クラスの低減に役立ちます。
列挙型,名前空間などのカテゴリに分けて何があるかまとめてくれるのも便利ですが、
どちらかというと人のコードを見る用途で使うことが多かったです。
cppcheck
超繊細インテリセンスです。
各ソースに細かく指摘をしてくれます。
SonarLit
Visual Studio拡張機能 リアルタイムでコーディングしながら静的解析をしてくれます。
リアルタイムでコードにダメ出ししてくれるのがありがたいです。
最後に
いかがでしたでしょうか。
リファクタリング作業でソースはきれいにはなりますが作品自体のゲームとしてのクオリティは変わらないので企業に見せれるくらいきれいにしたらほどほどに済ませましょう。
Discussion