最佳方法:阅读并理解未知的Xcode项目
我有一个大型的Xcode
项目,只有内嵌文档,由具有与我习惯的非常不同的编码风格的人编写。最佳方法:阅读并理解未知的Xcode项目
我现在的问题是,如果有人能够给我一些指导,如何尽可能快地阅读和理解未知的Xcode项目?
我试了一下:
首先我跑的应用程序。然后我尝试从application:didFinishLaunchingWithOptions:
委托方法开始(从iOS的情况下)逐个抛出项目方法调用。但很快我意识到,这会消耗太多时间。所以我尝试使用一些工具: 我用一个名为Graffle
的工具生成了一个UML图。它生成了一个平面图,其中的所有Xcode文件与它们在项目导航器中的外观非常相似 - 完全没有任何帮助。 然后我试图找到一个调用图工具,希望能够说明书面方法的所有交互。不幸的是,我只找到了其他平台的工具。然后我开始使用Instruments Profiler
,但从来没有达到真正帮助我的地步(也许还因为我不明白如何正确使用我的方法)。
那么,我想知道你的专家是如何工作的(一步一步地)抛出一个你没有写的客观C代码?任何链接,图书推荐,样本测试代码或其他都非常受欢迎。谢谢。
我假设你已经熟悉iOS及其库。如果不是,那将是你的第一步。
你不一定会从类转储或UML中获得太多的用处,因为很多调用并不是从你将看到的代码中明确做出的 - 特别是我在考虑委托方法。
我会从nib文件或故事板开始。按照导航通过应用程序 - 从用户看到的第一个屏幕开始,沿着树的每个可能的分支进行操作。大多数响应用户可以执行的操作的逻辑都将位于viewcontroller子类中,或链接到界面构建器中的UI对象。
数据模型(如果存在的话)应该能够被理解而不需要参考任何代码。了解你的头脑,看看它与用户界面的流程有何关系。
首先,我很同情。有时理解别人的代码比重新写自己需要更长的时间。
就我个人而言,我会把NSLog语句放在所有相关方法的开头。然后,我会从applicationDidFinishLaunching注释掉方法调用开始,尝试让应用程序逐步运行,并逐渐通过方法重新启用方法。
两个好的地方开始寻找总是;
- 是否有
MainWindow.nib
文件,在这种情况下,您可以看到如何设置视图控制器层次结构。 - 搜索
applicationDidFinishLaunching:withOptions:
委托方法,这是一切开始的地方。
从那里,它是所有关于寻找突破点的好地方。
除了上述建议,作为一个免费的工具,你可以尝试使用Doxygen:www.doxygen.com
输出内容可包括:
- 超链接的源代码(点击标识 - >示出了它的定义)
- 头依赖(包括&包括按图表)
- 函数调用的依赖性(链接到所有调用的函数)
- 类层次结构(图表,链接)
- 指数的命名空间,类名,等等...
你也可以给一个旋JetBrains公司AppCode(30天试用版):www.jetbrains.com
它旨在帮助代码的帮助,导航,分析,转换和重构。
这是一个有趣的问题,但我不知道它是否是一个好的SO问题......“正确的”答案是什么?不要惊讶,如果这被移动或关闭不具建设性。 – jrturton 2011-12-21 10:51:55
@jrturton Thx,你也许是对的。我决定这样做,因为我相信有一些“正确的”答案。也许不是一个答案,而是很多。我看到一些非常类似的问题,例如[this](http://stackoverflow.com/questions/155964/what-are-best-practices-that-you-use-when-writing-objective-c-and-cocoa)同样的问题,他们很有名。因此,我相信社区喜欢这类问题,它们应该是SO的一部分。 – 2011-12-21 11:24:02