2016-07-20 7 views
0

私は仕事で新しく、私は大きなコードjava/mobileベースを継承しました。数百ものJavaファイルがあります。私はそれを理解していない。ドキュメンテーションはほとんどありません。コードとその仕組みを理解することは私の仕事です。どのような戦略やアドバイスをすればこの問題に取り組むことができますか?大きなコードベースを理解するための戦略

これまで私が試したことは、アプリの特定の機能(印刷機能)を見て、コードにブレークポイントを置き、実行に沿って試してみたことです。これまでのところ、どのクラスがどのような順序で呼び出されるかしかわかりませんでした。しかし、私はこの方法は、この複雑なアプリケーションの限られた理解を提供することができると思う。私はまた、アプリの特定の機能に取り組むように依頼して、誰かがそれがどのように動作するかについて私に指導することができますが、人々はそのための時間がありません。他に何かお勧めできますか?

+1

この質問はかなり広く、「意見に基づく」回答につながります。だからそれはここでは流行だ。あなたはquora.comで尋ねようとするかもしれません。私の意見:既存のソースコードから構造体/アーキテクチャを推測しようとするツールがあります。このようなツールをまず使用して、あなたのアプリケーションを構成するものを大まかに理解してください**。いくつかの領域でちょうど盲目的にデバッグすることは、ほとんど役に立たないでしょう。さらに重要なことは、以前にシステムを使って作業していた人を特定することです。アプリケーションが何をすべきかを理解しているドメイン専門家。その後、彼らに話してください! – GhostCat

+0

もう1つの質問は、平均的なプログラマーとは何かを区別して、この問題に取り組むことができ、平均的な人よりも速く動作することが分かり、数日以内にコードを生成することができますか?これは管理者が探しているものですか? –

+1

また、答えは "それは依存する"です。私は、巨大な既存のコードベースを分析するために必要な最も重要なスキルが**経験**であると思います。過去5、10、20の類似したことを使って作業した場合、あなたはあなたが探しているものが分かっているので、より迅速に "パターン"を見つけることができます。あなたがこれを初めてやっているとき、あなたは同じ時点で多くのことを学んでいます。多くの人がそれをよくしています。その場合、あなたの「コアコンピテンシー」は体系的な作業のための能力になります。しかし注意してください:SOはそのような議論の場ではありません。あなたはquora.comに向けるほうがいいかもしれません... – GhostCat

答えて

1

私が継承した大きなアプリケーションでは同じことが起こりました。 デジタルノートを取るのに役立つ2つのツールを使用しました。私はMindmup (an online mind mapping tool, free, no download)を使って、私が何を学んでいるのかを追跡し、次回にアプリを訪問するときにそれを再学習する方法を使用しました。私もStarUML (a free, downloaded, UML tool)を使った。私は、アプリケーション内でプロセス、フロー、依存関係、オブジェクトの図を作成するために使用しました。もちろん、テキストファイルの内容も文書化しています。

ゆっくりと精神的モデルが構築され始めます。長い間追加して編集し続けるモデルです。

2

Javaでバックグラウンドを持っていない場合は、ソフトウェアが書かれているフレームワークに関するドキュメントを読むことをお勧めします。これは、例えばSpringや全く異なるものですが、フレームワーク自体がどのように動作するかを明確に理解すれば、プロジェクト自体で利用可能なドキュメントがあれば、より明確になる可能性があります。

これとは別に、ブレークポイントを使って以前と同じように、スケッチダイアグラムを作成し、フローのいくつかを書き込み/入力することができます(時間があれば)。

最初は圧倒的に見えるかもしれませんが、すぐにそれを取り戻すでしょう。

コードが実行された開始点を、おそらくUIまたはユーザーアクションから探し、それを結果にフォローします。あなたがプロセスに従うたびに、それはより速く進み、大きなイメージがより明確になります。

+0

別の質問は、平均的なプログラマとは異質なプログラマを区別し、この問題に取り組むことができます。数日以内にコードを生成しますか?これは管理者が探しているものですか? –

+0

あなたは経験豊富なために天才を間違えているようです。プロジェクトを拾い上げると、各モジュールや可動部品が何をしているかを知ることができます。経験が豊富であればあるほど、プロジェクトを手に入れて学習するのではなく、実際に作業を始めることが容易になります。監督やプロジェクトを手伝ってくれた人がいないというのは実に残念です。ドキュメンテーションやハンドオーバーなしであなた自身を責めないでください。製品に精通するためにはある程度の時間が必要です。 –

0

JavaコードをUMLモデルにリバースエンジニアリングし、学習したいクラスをドラッグアンドドロップしていくつかの図を作成することができます。

既存のクラス、プロパティ、およびリレーションシップを知ることができます。 GenMyModelは、何もインストールすることなくこの機能を直接オンラインで提供しています。see documentation

0

まずはビジネスロジックに関する優れた情報を入手してください。

関連する問題