今日、私は好奇心からいくつかのオープンソースプロジェクトのチェックアウトを行いました。そのため、しばらくしてOTTD(http://www.openttd.org/)のコードを見ていましたが、どこから始めればよいのか、プロジェクトを理解する方法がわかりませんでした。このような大きなプロジェクトに1、2日で慣れることができないことは承知していますが、どのように対処するのでしょうか。どこから始めればよいのでしょうか。
4 に答える
OpenTTDのソースのドキュメント:http://docs.openttd.org/、それらは役に立ちます。
また、dev wiki:http ://wiki.openttd.org/Development 。
なじむ方法は?
まず、コンパイルしてみてください。プラットフォームにコンパイルして、正しく実行されていることを確認します。
次に、やることリストからバグなどを選んで実装してみるか、ゲームをプレイして簡単なものを追加/変更することを考えてください。もちろん、失敗してタスクを変更したい場合もありますが、すべての試みはプロジェクトの構造を理解するためのステップになります。
私にとって、コンパイルの部分は最も厄介な部分です。私はWindowsを使用しているからだと思います:-)何日も考えたりスパムを送信したりせずに、ゼロから何かをコンパイルすることはほとんどできませんでした。しかし、コンパイルする必要のない多くのプロジェクトにすぐに慣れます。 PHPまたはPythonまたはJavaScriptで記述されているとおり。
私はコードで何かをしました。いくつかの重要な定数を変更しました:-)プラグインを作成します。なんでもいい。そしてある日、私は今、課題追跡システムからほとんどすべてのタスクを選択すれば、少なくとも問題がどこにあるかを見つけることができることを理解しました。
あなたがコードを読んでいるだけなら、あなたはそれをよく知らないでしょう!(良い)フィクションの本でさえ、何度も読んだだけでは完全に理解することはできません。
コードをダウンロードします。
お気に入りのIDEにセットアップして、ビルドして実行できるようにします。
main()の先頭にブレークポイントを設定します
デバッガーでステップスルーするために、ある程度の時間を費やしてください:)
物事がどのようにまとめられているか、依存関係がどこにあるか、そしてアプリで物事を行うときに何が起こるかについての良い感触を与えます。
もう1つの優れた戦略は、信頼しているソフトウェアであっても、使用しているソフトウェアから始めることです。次に、最も厄介なバグを見つけて修正します。
多くの場合、たくさんのスクラッチペーパー、または何らかの形の迅速な図表作成ツールを用意すると役立ちます。物事に出くわしたときに、それらが互いにどのように関連しているかをスケッチします。時間の経過とともに、物事がどのようにレイアウトされ、何が何と相互作用するかを、アドホックなクラス図のように(ただし、はるかに自由形式で)理解できるようになります。
識別できる場所を選択します。これはユーザー入力処理である可能性があり、プログラムの初期化シーケンスである可能性があります。そこから実行のフローをトレースして、状況がどのように発生するかを把握します。
うまくいけば、ソースコードに役立つコメントが含まれているといいのですが、OpenTTDの場合は、doxygenスタイルのコメントでさえあるので、そのための優れたドキュメントセットを入手できます。