2009-10-22 7 views
5

私は誰かのelsesコードを引き継ぎます。プログラマーができるだけ早く何をしたかを知る良い方法は何ですか?私はそれを実行し、それを踏んで、コールスタックを見てきました。他に何ができますか?誰かのコードを引き継ぐ

申し訳ありませんが、ドキュメントはほとんどありません。簡単な問題を修正しようとしています。ありがとう!

+0

これはコミュニティウィキです。これは主観的な質問です。 – Joren

+0

私はあなたがこのすべてをしなければならないと言います。問題はそれほど単純ではありません。がんばろう。 –

+0

これは私が現在働いている標準のようです...あなたは正しい道を歩いています。これらのような時代には、私は決して何か前向きなことを言うことは決してありません。私はたいてい試してみると言います。 –

答えて

5

通常、最良の方法は小さなバグを修正するコードの作業を開始することです。コードベースを学ぶ唯一の方法は、より多くの時間を費やすことです。コードベースを学ぶ魔法の方法はありません。複雑さに応じて数週間、数ヶ月、場合によっては数年かかるでしょう。しかし、最も一般的なビジネスシステムの場合、ランプアップ時間はコード知識の約6ヶ月間であり、産業知識の6ヶ月間は本当にすべてを理解するためのものです。

5

はそれに簡単な問題を修正しました。

編集: 大きな問題を修正し、理解している領域のドキュメントとユニットテストを書き始める。これらの領域をベースに構築してください。ある日、システム全体を理解できるかもしれません。

+0

これは解決策として働くことができると私は同意します...私はbandaiding bandaidsが嫌いです。 –

4

ドキュメント?デバッガで実行せずにコード自体を読んでいますか?

それ以外は、あなたがやっていることをやっている。

+0

私は通常、コードがドキュメンテーションでない場合は、ドキュメントが間違っている可能性があることがわかります...しかし、コードが "行うべきこと"に戻るかもしれません。 –

+1

これは当てはまりますが、ドキュメンテーションはコードよりも高いレベルにあるかもしれません。クラスXがどのように大きな画像に収まるかを理解しやすくするでしょう。 – jprete

0

私はバグ修正/修正を始めるまで、コードを完全に覚えていません。元のプログラマーがまだそこにいるならば、それを実装する前に変更を議論することが役に立ちます。

1

ロギングはコードが何をするかを見るのが良いです。

バージョン管理システムを使用している場合は、プログラマがどのようなコードに対してどのような変更を行うのかを確認して、いくつかの履歴を参照することができます。

プログラマーのコードスタイルを何らかの形で理解しようとすると時には役立つことがあります。これは、彼がどのように問題について考えて解決できるかを理解するのに役立ちます。

6

単体テストの作成を開始すると、クラス/メソッドを使用できるようになり、2つのことを学び、学び、バグを見つけたり、バグが見つかった場合に備えてツールを準備したりします。

+0

このアプローチの問題は、まず(1)どのように動作するか、(2)どのように動作するか、(3)エントリポイントは何かを知る必要があるということです。彼は、有効な単体テストを書くのに十分なことをまだ知っていないかもしれません。 :/ –

+3

単体テストを書くにもかかわらず、彼は学ぶでしょう。彼はコードを見てクラスの設計方法を知る必要があります。ドキュメンテーションがなくてもそれを理解しなければならない場合は、単体テストを書いて学習中に何か生産的なやり方をして、おそらくプロセスのいくつかのバグを修正してください。 –

+2

テストするように設計されていないコードベースの単体テストを書くのは難しいでしょう。その点について統合テストを書くことを検討してください。 –

1

まず、最も簡単なダイアログボックスとそのコードを見てみましょう。主にコーディングスタイルを分析し、開発者がコードをどのように整理するかを見ていきます。

コーディングスタイルがわかっていれば、ファイル内にすべてのものが存在する場所(またはランダムに配置されている場合でも、それが分かりやすい場合でも)は、他のものをすべて通過することが容易になります。

2

誰かのコードをすぐに理解するには、どのような弾丸もありません。特にハックでいっぱいで、ドキュメンテーションがない場合は特に。

クラス構造を理解し、デバッガヘルプを使用してソフトウェアの通常の流れを実行してください。

あまりにも多くのコードセクションをジャンプしないでください "ああ、私はこのセクションが何をしているか知っていると思います"。いいえ、あなたはしません。あなたがコードで見つけられるかもしれない "イノベーション"に驚くでしょう。

1

可能であれば、他の人のコードのユーザーと話し合う(エンドユーザーまたはコードを使用しなければならない他の開発者)。それはあなたに他人のコードの品質の感覚を与えます - ちょうど少数のバグでリリースされたのでしょうか、それとも6ヶ月の修正が必要でしたか?開発者はきれいに磨かれたアプリケーションを作ることについて慎重だったのですか、それとも混乱しましたか?それはちょっとだけコードをチューンアップする必要があるのか​​、それとも大きなチャンクを置き換える必要があるのか​​、いくつか考えてください。

+0

ユーザーインターフェイスとその背後にあるコードの品質には微妙な違いがあります。ビニールサイディングとよく似ています。その美しい白いサイディングの下で​​家は絶対的な難破船かもしれないが、配線は混乱し、フレームは腐っており、パイプは漏れている。しかし、まあ、それは通りから美しいですか? –

+0

それは確かに可能です。しかし、私は、一般的に、外見がよく見えて細部に気を配り注意を払って構築されていれば、同じ人物が両方をしたと仮定してフレームワークが同じように構築されている可能性があります。もちろん、あなたは誰が責任を負っているかを知る必要があります。悪い配線のためにサイディングをしている人には間違いをすることはできません。 – TLiebe

1

コードのメソッドにテストが追加されていない場合は、追加するのが好きです。コードをどのようにカバーするかを理解することで、コードパス、予想される出力がどのようなものかなど、多くの洞察を得ることができます。

1

他の誰もが、コーダーが行ったことを学ぶのは正確です。

それ以外の方法は、プログラム自体を学ぶことです。ユーザーと同様にアプリケーションを深く理解し、プログラムそのものが何であるかを理解してください。最終的なシステムを徹底的に理解すれば、どのように、なぜそれが書かれたのかを簡単に理解することができます。

0

クラスや関数などについて学んだことを文書化しても、次の人(または同じ人で働く人を雇った人)だけでも問題はありません。

また、これまで私がこれをやったときに、コードを理解しようとする前に、このプログラムを使用することをお勧めしました。はっきりと聞こえるかもしれませんが、あなたが見ているものの多くは、それ以降は理にかなっています。ユニットテストは、他の人が示唆しているように、同じように役立つかもしれません。 (リファクタリングに十分な自信を感じるときに役立ちます)

0

私がシステムをより早く学ぶのに役立つものは、自分でドキュメントを書くことです。

  • 私は多くのバグ/悪いデザインの決定が表示されます概要
  • 得ます。これは、注文しやすくするためのものです。 (無関係のバグを選んで解決するのではなく、実際に問題のバグを修正します)
  • 私は後でドキュメントを持っています。
  • ドキュメントは、私は、コードが何を知って、それが高いレベルで解決するために書かれた問題は良いスタートだと思うスーツの
0

に書き換え/それが簡単にリファクタリングを正当化するようになります。そうすれば、精神的にも、高いレベルで使用されるタイプツールでどのようにこのような問題が解決されるかを想像してみることができます。

その後、コードを見ていくことで意味が分かり、元の開発者の考えに従うことができます。さらに、失われたときにすぐに気付くでしょう。

私はまた、ほとんどの時間はコードの外の文書であり、ほとんどの時間はコードと同期しておらず、誤解を招く恐れがあると私は思っています。だから、こことそこにいくつかのコメント、クラスのヘッダー、メソッドのコメントも役立つはずです。

初めて私は別の人のコードを継承し、2日後に片頭痛を起こしました。私は悪夢でした。

だから楽しいです。

1

私が最初に始めるのはデータベースです。

私の経験では、データモデルを理解することは、コードを実行するときのコンテキストを提供する鍵です。 (これはデータモデルが汎用のキー値ジェネリックエンティティテーブルではないことを前提としています)

+0

データモデルが汎用のキー値テーブルである場合、そこに問題があることがわかります! – HLGEM

0

私は昨年の大部分を他の誰かから継承したコードの作業に費やしました。ドキュメンテーションはなく、システムが何をすることになっていたか大量の情報は、どこに書かれたのではなく、クライアントの頭に書かれています。私にとって重要なのは、可能な限り多くの質問をし、利用可能なすべての情報源から情報を収集することでした。私は自分の書類をコンパイルすることをお勧めします。

多くの人がコードを書き換えないと言っているかもしれませんが、コードがコメントやコードに誤りがある場合(自己文書化ではない場合)、これが最良の方法です。私が苦労したコードでは、しばしば最良の解決策でした。

始める前に、ある種の標準文書があると便利です。標準のドキュメントは、コードを解読したり、コードを仕様に引き上げたり、理解しやすくするのに役立ちます。

関連する問題