コードリーディング

引き続き今更WEB+DB Press Vol.35を読んで。

予備知識

  • 見るべきところ
    • モジュールの構成と役割
    • アルゴリズムとその意図
    • データ構造の意味
  • 解析の種類
    • 静的解析
    • 動的解析
      • 実際に動かす
  • 心得
    • 「メモ」をとりつづけること
      • わかったことをどんどんメモって残す、不要になったメモはどんどん捨てる
  • 全体構造の把握構造
    • README
    • ディレクトリ構造
      • viewというファイルがあればMVCモデルを使っているだろうとか
    • ビルドファイル(build.xml)
      • 依存関係の確認
    • 実際にビルド、またはサンプルプログラムを動かす
    • どのファイルが重要か、どのファイルから手をつけるかを確認

実践

  • ひらメソッド
    • 処理内容の把握は後回し
    • エントリポイントから呼び出している関数を洗い出し、コールグラフをまず書く
    • 末端の関数まで降りてきたら、そこで始めてコードを読む
    • 各メソッドごとにWikiでメモを残す
  • ソースディレクトリ全体の検索
    • $ find . -print | xargs grep -n キーワード
    • リフレクションやプロパティファイルの使用箇所を見つける
  • 意図を汲む
    • クラスや関数の名前に注目する
    • 単体テスト用のコードを見る
      • 単体のテストコードに実装コードの使い方、意図が書いてある

Javaの場合

  • インターフェースの多用
  • DIの使用
    • 呼び出し元がない場合はDIを疑う

Eclipseの便利技

  • F3
    • 宣言ジャンプ
  • F4
    • 型階層を開く(実装コードを開く)
  • Ctrl + Alt + h
    • 呼び出し階層を開く

感想

  • 知らないうちにやっている技?が多いので、それを意識してできるようになりたい
  • コールグラフは全体像を把握するのに良さげ
  • ひらメソッドがかなり良さそう
    • これでSeasar2のコード読みたい
    • 誰か先にやって、どっかのWikiで公開してないかなあ