コードの複雑さによって、私はいくつかのことをしました。
あなたはおそらく、各メソッド/関数/オブジェクト/何でも(あなたは言語に言及していません)、それが何をしているのかを理解しようとします。理解するのに1分以上かかる何かがある場合は、理解できなかったことを理解し、次の時間にそれを取らないようにコメントを書いてください。
非常にうまく設計されていない限り、すべての部品が互いにどのように関連しているかを理解するのは難しい場合があります。各ルーチンの入口/出口でデバッグ出力を表示し、スタックダンプを使用すると、どのようにしてどのような場所が得られたかを知ることができます。デバッガは、このようなことを理解するために素晴らしいことができます。
私が本当に役に立つと分かった最後のツールは、プロファイラです。 Eclipse用の無料のプロファイラプラグインがありました(名前は忘れていますが、多くはあるとは思いません)、実行中のコードの素晴らしいシーケンス図が作成されます。これは、コードが何をしているかを理解するために私が見た中で最も優れたツールです。当時はセットアップが少し難しかったですが、それを続けると、それは実行可能であり、価値があります。
私はプロファイラをオンにして、1つのボタンを押す/ 1つのタスクを実行してから、そのボタンの「実行」を保存しました。
私は些細なクラスを除外して半妥当なサイズにしました(一部は2ページ、1つのシーケンスダイアグラムは4x6枚の用紙を印刷しました(ランドスケープ))。私はそれらをまとめて録音し、それらを私の立方体の壁に置き、そのことから地獄を研究/文書化しました。
シーケンス図が正しく完了したら、途中でロックします。いくつかのコードを理解しようとしていて、シーケンス図を使用していない場合は、それらを調べてください。私はおそらく、私が見てきた最も有用な設計ドキュメンテーションツールだと思います。