Garbage Collection in Java:Overview, Successes, Challenges


2003 年 9 月 17 日(水)サン・マイクロシステムズ 用賀オフィスにて「ガベージコレクション in Java」を開催いたしました。 本セミナーにご参加いただけなかった会員の方にも、セミナーの内容を伝えるために、スライドの全ページに説明資料を付け加えたスライドショーを用意しました。

Metrics

プロジェクトのソースコードのメトリクスを算出するビュー。「依存性グラフビュー」は、いわゆる「はてなおとなりページ」っぽい、あのびよんびよんした表示で依存性を表示してくれる。どんな感じかはリンク先の文書でどーぞ。

統計っぽいものや、Bobおじさんメトリクスの意味合いの日本語訳があると助かるなあ。複雑さの目安も測れていそうな感じなのだけれど。

……試しに私が現在保守することになっているサブシステム3つを測定してみました。ソースコードはまだイジってない段階です。リファクタしないといけない予感がビンビンしているので、取り掛かる前の記念に……:

  • LoC: 17,070
  • パッケージ数: 26
  • クラス数: 265
  • インターフェース数: 5
  • メソッド数: 1,502
  • staticメソッド数: 624
  • フィールド数: 626
  • staticフィールド数: 394

17,070LoCというのはそんなに大きな規模ではないと思うのだが(具体的にはどんな規模なのかがわからない……私のキャリアはコーディング傭兵でしかないから)、に、しても、サブシステム3つでインターフェースが5つ、ってのはどう思われますか、ロッド・ジョンソン先生!!

ビジネス統計入門

あー、高校んときにちょっとだけ習ったなあ、統計。以後、まったく触れていないので、何もかも忘れている。ちょっと勉強し直さないと……。ちなみに、上のMetricsでは、なかなか興味深い計測値もたたき出されるようです(少しドキュメントを読んだ)。

  • Specialization Index <-- オーバーライドメソッド数 * 継承ツリー深度 / メソッド数
  • メソッドの凝集性欠落度: 0(みっちり凝集)〜1(ぐずぐず) <-- class設計の良さ、になるのかな
  • Bobおぢさんの「Normalized Distance from Main Sequence」: 0に近いほど、良いpackage設計、だそうな
  • などなど

皆さんも自分の手がけているアレなシステムを計測して晒してみてはいかがでしょう ;-p)

Metricsの「マッケーブの循環複雑度」について

「McCabe's cyclomatic complexity」の見方。とめども日誌経由。数学だなー。自分が昔かかわったプロジェクトのコードも激しく測定してくなってきた。