不确定这是否是最好的询问地点,但如果它被关闭了哦。我从事计算机编程并开始我的第一个工作学期。我将在 Objective C 中为 iPhone 进行 2D 游戏编程。我只是想知道你是否有任何技巧来学习代码如何在一个大项目中工作。在大学里,我从来没有在这个范围内工作过。我习惯了一个可能有十几个源文件的项目,而我将要处理的项目有数百个。这对我来说是非常压倒性的。
任何提示将不胜感激。非常感谢
不确定这是否是最好的询问地点,但如果它被关闭了哦。我从事计算机编程并开始我的第一个工作学期。我将在 Objective C 中为 iPhone 进行 2D 游戏编程。我只是想知道你是否有任何技巧来学习代码如何在一个大项目中工作。在大学里,我从来没有在这个范围内工作过。我习惯了一个可能有十几个源文件的项目,而我将要处理的项目有数百个。这对我来说是非常压倒性的。
任何提示将不胜感激。非常感谢
我就是这样做的。意见和方法可能会有所不同。一般来说,我发现了解系统的最佳方式是在应用程序运行时浏览代码。
在应用程序的不同位置重复该过程,您很快就会大致了解应用程序的工作原理。然后更容易捕捉细节。
如果系统真的很庞大(例如在多个系统上运行的企业应用程序),那么显示所有架构上重要部分的图表可能会有所帮助。对于 iOS 应用程序,可能不需要它。
祝你好运...
我是一名三年级的计算机工程师,已经完成了四个工作学期,我可以提供以下内容:
一些一般性建议:
将你的方法划分在一个大项目中仍然非常有用,就像在一个小项目中一样。您一次关注的具体部分越多,就越容易理解它们。由于程序相互依赖,这并不总是可行的,但是仍然可以单独处理图形部分或角色的移动算法等。您应该知道,过去对于受过教育的人来说是可能的知道人类知识的总和,但在今天这是不可能的。即使是高级工程师/程序员也有特定的专业领域,以及他们模糊的其他领域。找到你最喜欢/最有才华的事情,并为此投入时间。
一个基本的基础很重要。学习循环结构、类、方法等的基本思想,对它们了如指掌,所以在跨语言/平台应用它们时,你需要做的就是重新熟悉语法。相同的基本思想适用于多种语言。
最重要的是,不要惊慌。这是您的第一个工作学期,您被分配了导师/主管,并与团队合作。一个人做会很困难,所以要和你的队友/上级建立良好的关系,这样你们就可以互相学习,分工,减轻自己的压力!
祝你好运!:)
少读多做,当你遇到困难时再读。在我看来,这是学习任何新语言的最佳方式,也有人说:
“我们边做边学,别无他法”。
规则1:放松。
规则 2:你必须明白这不是容易掌握的东西。这就是为什么那些确实得到很好报酬的人。如果你有一个想法,你可以在几周内把这些东西搞定,你需要把它扔掉。计划花几个月的时间来研究它。
规则 3:了解 Apple API 是巨大的并且它一直在发展。每天都有足够的内容来学习新的东西。
规则 4:你必须学习的编程语言越少,学习新语言就越难。你会比已经学过六种语言/API 的人学得慢。
规则 5:不要害怕使用重复和蛮力。我认为让新手慢下来的事情是不学习常见基础类的行为和方法,如NSString
,NSArray
等NSDictionary
。
规则 6:作为一种学习练习,复制粘贴可能不是正确的做法。如果有一个Apple示例说明如何做某事,而不是复制粘贴,我倾向于手动重写它。我发现它在我的脑海中更好。
规则 7:使用你喜欢的任何资源。没有关于你应该如何学习的规则。
规则 8: iPhone 是一种内存受限的设备,网络和本地存储访问速度很慢。您的应用程序的某些部分可以随时卸载,您的应用程序负责维护其内存占用(而不是用户),并且事件(电话、内存等)可能需要应用程序相应地快速响应。
规则 9:这与你无关。这与您的代码无关。这与你的代码做这个或那个无关。首先是关于用户并响应用户。第二是您的代码响应框架。您通常不会告诉框架该做什么。当它需要某些东西时,它会向你索要东西。你坐下来等它跟你说话。你不负责。你不控制运行循环;它控制着你。您注册以在事情发生时被告知,并表明您是对某事有所了解的对象(例如表格的数据)。然后你放手,让可可做剩下的。这是一个非常不同的世界。我非常喜欢它。
规则 10:放松。
当我来到一个新的 Xcode 项目时,我会在 OmniGraffle Pro 中打开它。如果项目组织良好,您将看到一个漂亮的图表,其中包含类的摘要、存在的方法以及一些事物之间的关系、enum
需要了解的重要信息以及其他有用的信息项目的一个很好的概述。
之后,像@mprivat 所说的那样选择一个点并在调试器中运行它,然后感受一下事情是如何运行的。我喜欢使用断点名称和命中计数的日志设置断点(如果看起来相关,可能还有一些变量或参数的值)并在一段时间后自动继续,以避免在调试器暂停时有时会出现的讨厌的计时问题执行。我使用断点日志记录,所以我不必担心意外提交杂乱的代码。(不过要小心拉取新代码,因为断点不会随着代码库的变化而移动。:))