在大项目中学习代码的技巧

时间:2013-05-31 13:10:54

标签: iphone objective-c

不确定这是否是最好的地方,但是它是否会被关闭哦。我从事计算机编程,从我的第一个工作期开始。我将在目标C中为iPhone进行2D游戏编程。我只是想知道你是否有任何关于学习代码如何在一个大项目中工作的技巧。在大学里,我从来没有在这个范围方面做过一些事情。我习惯了一个可能有十几个源文件的项目,而我将要做的工作有数百个。对我来说这是非常压倒性的。

任何提示将不胜感激。非常感谢

4 个答案:

答案 0 :(得分:2)

我就是这样做的。意见和方法可能有所不同。 一般来说,我发现学习系统的最佳方法是在应用程序运行时浏览代码。

  1. 在用户界面中选择一个重要位置(启动屏幕,其他一些屏幕)。
  2. 找到该视图的类。一般只要问高级开发人员。开发人员很乐意为想要自己学习而不必解释所有内容的人提供一个指针(没有双关语)。
  3. 在该类中放置一个断点,然后在Xcode中运行该应用程序,直到遇到断点。
  4. 然后开始跟踪,看看情况如何发生。
  5. 在应用程序的不同位置重复此过程,很快您就可以大致了解应用程序的工作原理。然后抓住细节要容易得多。

    如果系统非常庞大(就像在多个系统上运行的企业应用程序一样),那么显示所有架构上重要的部分的图表可能会有所帮助。对于iOS应用程序,可能不需要它。

    祝你好运......

答案 1 :(得分:2)

我是一名已完成四个工作任期的第三年计算机工程师,我可以提供以下内容:

一些一般性建议:

  • 划分您的方法对于大型项目仍然非常有用,就像在小型项目中一样。您一次关注的具体部分越多,理解它们就越容易。由于程序的相互依赖性,这并不总是实用的,但是仍然可以单独使用图形部分,或角色的运动算法等。你应该知道,过去认为受过教育的人是可能的知道人类知识的总和,但今天这是不可能的。即使是高级工程师/程序员也有特定的专业领域,以及其他模糊的领域。找到你最喜欢/最有才华的人,并投入时间。

  • 基础很重要。研究循环结构,类,方法等的基本思想,并像手背一样了解它们,因此在跨语言/平台应用它们时,您需要做的就是刷新语法。相同的基本思想适用于多种语言。

  • 最重要的是,不要惊慌。这是您的第一个工作期限,您被分配了导师/主管,以及与团队合作。单独行动会很困难,所以与你的队友/上司很好地联系,这样你们就可以相互学习,分工,减轻你自己的压力!

祝你好运! :)

答案 2 :(得分:2)

简答:

少读,多做,然后在遇到困难时阅读。在我看来,这是学习任何新语言的最佳方式,也有人说:

  

“我们通过实践来学习,没有其他办法”。

长答案:

规则1:放松。

规则2:你必须明白这不容易掌握。这就是为什么获得报酬的人真的很好。如果你有一个想法,你可以在几周内解决这些问题,你需要抛弃它。计划花几个月的时间来处理它。

规则3:了解Apple API是巨大的,并且它始终在不断发展。每天都有足够的内容来学习新东西。

规则4:您必须学习的编程语言越少,学习新语言的难度就越大。您将比已经学习了六种语言/ API的其他人学得慢。

规则5:不要害怕使用重复和蛮力。我认为减慢新手速度的因素并不是学习常见基础课程的行为和方法,如NSStringNSArrayNSDictionary等。

规则6:作为一项学习练习,复制粘贴可能不是正确的做法。如果有一个Apple如何做某事的例子,而不是复制粘贴,我倾向于手动重写它。我发现它在我的脑海中更好。

规则7:使用您喜欢的任何资源。关于你应该如何学习没有规则。

规则8: iPhone是内存受限设备,网络和本地存储访问速度很慢。您的应用程序的某些部分可以随时卸载,您的应用程序负责维护其内存占用(而不是用户),并且事件(电话,内存等)可能需要应用程序相应且快速地做出响应。

规则9:这不是关于你的。这不是关于你的代码。这不是关于你的代码做这个或那个。它首先是关于用户并响应用户。这是关于响应框架的代码的第二个问题。您通常不会告诉框架该做什么。它会在需要的时候询问你。你坐着等着和你说话。你不是负责人。你不控制runloop;它控制着你。您注册以便在事情发生时被告知,并且您表明您是了解某事物的对象(例如,表格的数据)。然后你松开,让Cocoa做其余的事情。这是一个非常不同的世界。我非常喜欢。

规则10:放松。

答案 3 :(得分:0)

当我来到一个新的Xcode项目时,我在OmniGraffle Pro中打开它。如果项目组织得很好,你会看到一个很好的图表,其中包含类的摘要,存在的方法以及一些事物彼此之间的关系,重要的enum要了解的内容,以及有助于深入了解项目的其他有用信息。

之后,选择像@mprivat这样的点说并在调试器中运行它,并了解事情的运行方式。我喜欢用断点名称和命中计数的日志设置断点(如果看起来相关,可能是一些变量或参数的值)并在一段时间后自动继续以避免讨厌的时序问题,当调试器暂停时有时会出现问题执行。我使用断点记录,所以我不必担心意外提交杂乱代码。 (小心拉动新代码,因为断点不随着你不断变化的代码库而移动。:))