4

Javaで大企業のプロジェクトを理解するための最良の方法は何ですか?

4

6 に答える 6

11

このトピックに関する Dave Thomas (「The Pragmatic Programmer」Dave) の素晴らしいポッドキャスト/インタビューがここにあります。

彼はそれを「ソフトウェア考古学」と呼んでいます。

多くのさまざまな理由で、組織はコード ベースの制御を頻繁に失います。知識は忘れられ、人々は去っていきます。コードベースを考古学的な懸念事項と簡単に間違える可能性があります。その上に構築されたミッションクリティカルなアプリケーションが、何かを変更または拡張する必要があるまで動き続け、突然誰も理解できない大量のソースコードを手に入れるという事実がなければ、非常に簡単です。しかし、それは一夜にして世界で最も重要なことになりました。

大量のコードを処理するための近道はほとんどありません。一般に、「それを理解する」ための探求と、「使命を完了する」ために指摘された実用的な変更を加えるというプレッシャーとのバランスを取る必要があります。

于 2010-06-03T02:00:34.990 に答える
10

企業のすべてのコードのすべての行を知ることはできません。あなたができることは、クラス、それらが何をするか、そしてそれらがどのように相互に関係しているかを理解することです.

作業の大部分を行う大規模なクラスに焦点を当てたクラスの観点から、コードの流れの最も基本的な理解を得ることから始めます。そこで何が起こっているのかを理解したら、小さなクラスに焦点を合わせ始めます。いくつかのクラスについて十分に理解できるようになるまで、これを続けてください。

さらに、会社の一般的なプログラミング タスクに分解することもできます。これらの研究のリストを取得したら、それぞれの実装に何が関係しているかを確認します。

最後はただの経験です。好きなだけコードを勉強できますが、実際のコードをいじる以外に方法はありません。プログラムを作成し、テストを行い、既存のコードがどのように実行されるかを調べることは、新しいシステムを学習するための最良の方法です。

于 2010-06-03T01:19:57.217 に答える
2

単体テストの作成を開始します。何か役に立つことを行い (コードを理解するための時間が増える可能性があります)、機能を詳しく調べます。また、そのプロセス中に質問が出てきたときに質問を開始します。非常に具体的な質問をすることができ、同僚に感銘を与える可能性があります:)

于 2010-06-03T11:39:32.930 に答える
1

簡単な最初のタスクを取り、どこにも急いではいけません。周りを見回し、時間を使って環境を学び、理解してください。コール スタックを調べ、デバッガーを使用します。解決策を見つけたら、仲間にコード レビューを依頼し、彼らから学びましょう。次に、別のタスクを実行し、別のタスクを実行し、さらに別のタスクを実行します...

あなたはすぐにそこに着くでしょう:)

于 2011-03-07T15:36:35.727 に答える
1

私がよく出発する場所は、ビルド/パッケージ/デプロイ スクリプトと構成ファイルです。話しているアプリケーションのサイズに応じて、内部構造、外部依存関係について多くのことを教えてくれ、さらに掘り下げる必要があることを強調することができます。 .

次に、コード カバレッジ ツールを使用して、単純なシナリオのカバレッジを記録します。これは、それを実行している領域を大まかに示します。これのバリエーションは、トレース プロファイラーで実行されます。ヒープ ダンプは、基本的なデータ構造を理解するのにも役立ちます。

最後に、さまざまなシナリオでアプリケーション ログを調べます。ただし、これらは通常、情報が多すぎるため、何を探しているかを知る必要があります。

これらすべてにより、アプリケーション全体の良いアイデアが得られるはずです。その後、デバッガーを起動して、コードを突き刺す必要があります。同僚にお気に入りのブレークポイントの場所を尋ねてください。通常、誰もがいくつかのブレークポイントを持っています。

Java または C# を使用している場合は、IDE と find-usages の使用方法を理解していることを確認してください。Structure101 (私のお気に入り)、SonarJ、LattixDSM など、静的分析と理解のためのさらに高度なツールがあります。

一部の UML リバース エンジニアリング ツールはクラス ダイアグラムを生成できますが、通常はノイズが多すぎるため、手動でプルーニングを行うと、重要なものと重要でないものを区別できると想定されます (通常、新しいコードベースには当てはまりません)。これらのいずれかを取得した場合は、必須クラスから始めて、「依存関係の追加」機能を使用してアプリケーションを段階的に探索することをお勧めします。

于 2010-06-03T12:48:08.417 に答える