ターゲット
- 入社してすぐで、大規模なコードを読むのに慣れてない方
- クラス図を知っている方(クラス、継承がわかってればOKです)
- 厳密な方法よりも、コードを読む時のちょっとした図の書き方を知りたい方
はじめに
僕は入社2年目で、古くから伝わるJavaコードのメンテナンスをしているのですが
複雑なコード読むには、以下のような問題に直面して苦戦していました。
- 似た様な名前のクラスが大量にあって混乱する
- どのクラスにどんなメソッドがあったか覚えておけない(さっき見てたメソッドどこにあるの?)
- 過去に似た修正をしたはずだが、過去のコードを見ても思い出すまでに時間がかかる
そんな中で、いろいろな試行錯誤をして気づいた有用なモデリング方法(クラス図の書き方)を紹介します。
注:自分はastahが好きなのでastahを使いますが、大抵のモデリングツール、作図ツールでも同じようなことが出来ると思います。
図にタイトルをつける
まずは図にタイトルをつけます。
この時、自分が知りたい事や修正したい事といった目的をタイトルとします。
こうすることで、この図が何を明らかになり以下のような事態が防げます。
- 要らない要素まで図に書こうとして、時間を無駄にしてしまう
- 要らない要素が増える事で、見にくい図になってしまう
- 脇道にそれて全然違う事を調べている
さらに、作成した図をissueタイトルのついたパッケージに入れておくと
あとから「このIssueのココを修正した時、どうやって解決したんだっけ?」という時に掘り出しやすくて便利です。
クラスを書く
図を作成したら、クラスを書いていきます。
ここで注意する点は、
- タイトルに書いた事以外の要素を表現しようとしない
- ノート機能(メモ)で関数の振る舞いや覚書を書いておく
- 疑問等もノートに残しておく
クラス図はクラス間の関係や継承関係などの構造を表現することは出来ますが、振る舞いを表現する事は出来ません。
なので関数の振る舞いなど、クラス図で表現出来ない要素や表現のやり方が分からない要素はノートに書いておきます。
まとめ
- 目的を明確にして図のタイトルや図要素を描く
- とにかくメモを残す
自分は上記2つを意識するだけで、かなりコードの理解力があがりました。
まだまだ2年目の駆け出しで、モデリングもコーディングも未熟ですが、一度試していただいて少しでも
コードを読むのがツライという人の助けになれば幸いです。
また、間違いや方法の改善点等発見され際はコメント等で教えていただければ泣いて喜びます。