专栏名称: 伯乐在线
关注职业资讯;学习各类职业感悟、心得和经验分享,扩大职业视野;体会求职、工作和创业的历程 - 就在JobBole.com 伯乐在线
51好读  ›  专栏  ›  伯乐在线

我在苹果公司学到的编程技巧

伯乐在线  · 公众号  · 程序员  · 2017-07-02 22:45

正文

(点击 上方公众号 ,可快速关注)


编译: 伯乐在线/唐尤华

如有好文章 投稿,请点击 → 这里了解详情


【伯乐在线导读】:oe Moreno 在 1998 年至 2007 年期间就职于苹果公司,是苹果在线商店的一名开发者。通过此文,也可对苹果公司的一些产品开发细节有所了解。以下是全文。


当我还在苹果在线商店工作的时候,我们从来没有对在线网站做过负载测试。我们也不觉得需要这么做。然而,当每次史蒂夫 · 乔布斯在演示某个幻灯片过程中切换到在线商店时,会走下台来等待,这是非常有趣的经历。作为事后检查的一部分,每次在线商店重新上线时,我们都会问自己服务器的瓶颈在哪里:是 CPU、网络带宽、磁盘 I/O 还是内存?虽然准确预测整个系统在实际环境中的行为非常困难,幸运的是我们有一整套的测试策略来确保在重新启动之前有足够的测试。


Joe Moreno


负载测试 / Load Testing


许多公司用负载测试来试验他们的 web 应用程序能够支持怎样的负载。一个最平常用到的,但是错误的方式是把 web 站点上线然后启动负载测试。这种方式的问题在于,它不会告诉你 web 站点从在线状态到不能提供服务这个过程中是如何运行的。当一个 web 站点在使用状态时宕机然后重新启动,这时 web 站点表现出的行为,一定与负载测试状态下有很大的区别。例如,我们发现在 iTunes 商店(iTunes Store)第一次启动时,一个被信任的 WebObjects 组件不是线程安全的,而这个问题只有在该对象处于重负荷情况下才会出现。


初生牛犊 / Cutting My Teeth


当我第一次加入苹果在线商店开发小组时,我和一位经验丰富的软件工程师搭档,他教会我如何快速地熟悉代码库,构建流程以及单元测试和组件测试。由于在线商店已经上线了,我们只有在对新代码进行测试以及搜集数据之后才能发布。


我的第一项任务是和搭档一起实现一个在网络上用特性表形式搜集产品信息的简单 web 服务。一般这样的简单 web 服务程序只需要一到两天,而我们俩在师傅的一步步指导下花了一整个礼拜,通过结对编程方式完成了整个流程。(虽然我们采用结对编程,但是我们使用的是 Agile/Scrum,而不是极限编程。每个开发小组可以在保证进度的前提下使用任何他们达成共识的开发技术。我服务的团队碰巧有几个经过训练的 scrum 大师,他们得到了管理团队的支持。)


在实际开始编写产品代码之前,我们需要编写单元测试。所有的软件工程师都被要求先为他们的 API 编写单元测试,这个一个很值得学习的规范。(编注:测试在敏捷当中非常重要,参考这篇《敏捷方法中测试人员的价值》。)接下来,我们在 Eclipse/WOLips 上使用 WebObjects/Java 编写代码,与此同时我们为应用程序设下关键的断点,然后在调试模式下运行,这样我们就可以单步调试代码。我见到了有太多在别处工作的软件工程师,他们不断地编码然,就像他们在不断地往墙上扔东西,然后看看到底会有什么会粘在墙上(像碰运气一样)。


在我们检入我们代码的同时,软件仓库会自动构建所有的应用程序,然后对它们运行单元测试。如果你的代码让这次构建失败,开发小组的每个人,包括一到两位项目经理会受到邮件通知——你就是构建失败的罪魁祸首。







请到「今天看啥」查看全文