2011-12-21 5 views
3

私は慣れ親しんだコーディングスタイルとはまったく異なるコーディングスタイルを持つ人物によって書かれた、インライン文書のみの大きなXcodeプロジェクトを持っています。最善のアプローチ:未知のXcodeプロジェクトを読んで理解する

私の質問は、未知のXcodeプロジェクトをできるだけ早く読んで理解するためのガイドラインのようなものを私に与えることができましたか?私が試した何


まず私は、アプリを実行しました。次に、application:didFinishLaunchingWithOptions:デリゲートメソッドからプロジェクトメソッド呼び出し(iOSの場合)を1つずつ呼び出すようにしました。しかし、すぐに私は、これはあまりにも多くの時間を消費することに気付きました。だから私はいくつかのツールを使用しようとしました: GraffleというツールでUMLグラフを生成しました。それは、すべてのXcodeファイルがプロジェクトナビゲータで見た目に似ているフラットなグラフを生成しましたが、それはまったく助けませんでした。 次に、書かれたメソッドのすべてのやりとりをうまく説明するコールグラフツールを見つけようとしました。残念ながら私は他のプラットフォーム用のツールしか見つけられませんでした。その後、私はInstruments Profilerを使い始めましたが、それが本当に助けになったことはありませんでした。

もう一度、専門家があなた自身で(ステップバイステップで)どのようにあなたが書かなかった目的コードを投げたか知りたいと思いますか?どんなリンク、本の推薦、サンプルテストコード、またはその他も大歓迎です。ありがとう。

+1

これは興味深い質問ですが、その良いSO質問...「正しい」答えがなにか?これが建設的ではないとして動かされたり閉じたりしたら、驚かないでください。 – jrturton

+0

@jrturton Thx、あなたは私の権利かもしれません。私はいくつかの「正しい」答えがあると信じているので、そうすることにしました。たぶん1つの答えではなく、多くの。私は[this](http://stackoverflow.com/questions/155964/what-are-best-practices-that-you-use-when-writing-objective-c-and-cocoa)のようないくつかの非常にインターンシップな質問を見ました。同じ問題があり、彼らはかなり有名です。したがって私はコミュニティがこれらの種類の質問を好んでいると信じています。 –

答えて

1

あなたはすでにiOSとそのライブラリに精通していることを前提としています。もしそうでなければ、それはあなたの最初の一歩です。

多くの呼び出しが明示的に行われていないため、必ずクラスダンプやUMLから大量の使用を得ることはありません。特にデリゲートメソッドについて考えています。

私はnibファイルやストーリーボードから始めます。アプリのナビゲーションに従います。ユーザーが最初に見た画面から始め、ツリーの可能な各分岐を処理します。ユーザーができることに反応するロジックのほとんどは、ViewControllerサブクラス内にあるか、またはインターフェイスビルダーのUIオブジェクトにリンクされます。

データモデルは、存在する場合は、コードを参照することなく理解できる必要があります。そのことを頭に入れて、それがUIの流れにどのように関係しているかを見てください。

2

まず、私は大きく共感します。他人のコードを理解することは、自己を書き直すよりも時間がかかります。

個人的には、関連するすべてのメソッドの先頭にNSLogステートメントを配置します。私は、その後、アプリケーションを取得する方法を呼び出すと、アプリケーションを段階的に作業し、徐々に方法でメソッドを有効にしようとしているapplicationDidFinishLaunchingコメントを開始します。

1

見栄えの良い場所は常に2つあります。

  1. MainWindow.nibファイルがあります。その場合は、View Controller階層の設定方法がわかります。
  2. applicationDidFinishLaunching:withOptions:デリゲートメソッドを検索します。これがすべての開始場所です。

ここからは、ブレークポイントに適した場所が見つかります。

上記の提案に加えて
2

、無料のツールとして、あなたはDoxygenのを試みることができる:www.doxygen.com出力を含めることができ

  • ハイパーリンクされたソースコードを(識別子をクリックします - >その定義を示す)
  • ヘッダの依存関係(含ま-によってグラフ&を含む)
  • 関数呼び出しの依存関係(関数に対するすべての呼び出しへのリンク)
  • クラス階層(グラフ、リンク)
  • 名前空間、クラス名などのインデックス...

あなたはまた、JetBrainsのAppCode(30日間試用版)へのスピンを与えることができる:www.jetbrains.com

コードアシスタンス、ナビゲーション、分析、変換、リファクタリングを支援することを目的としています。

関連する問題