[翻译] 学习iOS开发的建议:如何从菜鸟到专家

[文章原地址]

http://mobile.tutsplus.com/tutorials/iphone/ios-quick-tip-from-novice-to-expert/

翻译有误之处请勿见笑,本人将在文章的部分地方添加注释,并根据需求增减文章内容,在此对原作者辛勤劳作表示感谢 

iOS Quick Tip: From Novice to Expert

Bart Jacobs on Jul 29th 2013 with 5 comments

Even though it’s possible to learn the essentials of iOS Development in a weekend, it will take much longer to master the craft. The question then is how do you transition from a novice to an expert? In this quick tip, I will provide you with a breadcrumb trail that may help you on your way to becoming a great iOS developer.

虽然,在一个惬意的周末学习IOS开发是可行的,但是呢,想完全熟练的掌握它可要花费n长时间.问题是,你怎样才能够从一个菜鸟变成老鸟?在以下简短的描述中,我会给你来点建议,帮助你尽快上路,成为IOS开发者的高手.

 


1. Practice, Practice, Practice

There are no shortcuts. This is something that I’d like to emphasize before continuing, because it is important to get rid of any illusions that might be stuck in your head. You don’t become a skilled developer if you only program on Sunday afternoons between 4PM and 5PM…if the sun isn’t shining and there’s nothing on television. Don’t get me wrong, it may be fun to do so, but it won’t bring you much closer to your goal of becoming an expert developer. Apart from a few exceptions, most people need practice -and lots of it. If you aren’t prepared to put in the hours, then it’s better to revisit your goals and ambitions. Become great at something you love and the time spent practicing will be its own reward.

没有捷径啊少年!继续讲下去之前我得提前说一下,因为,摒除任何能够速成的想法而去面对残酷的现实是相当重要的.如果你仅仅想在星期天下午的4点到5点之间来搞一下,你是不可能成为一个高手的...仅仅是因为不能出去玩或者是看不了<生活大爆炸>了.别耍我了,也许你觉得你已经花了一个小时的时间来做了,但是呢,那绝不会让你接近你想成为高手目标的一步.抛开一些例外,大部分人都需要练习.练习再练习,如果你不想花时间去做,那你就别想成为高手而继续当苦逼码农.花费时间以及精力去做你喜欢做得一些事情是成为高手的必经之路.


2. Learn From Others

One of the best strategies to improve your skills and to adopt best practices is to learn from other people’s code. This not only means browsingStack Overflow, but also, and more importantly, libraries or code snippets that are open sourced by fellow developers.

一个提高你能力的最好的策略以及最有效率做练习的方式就是去学习别人的代码.这里不仅仅是说你去 Stack Overflow (栈溢出网站可是相当不错的网站哦)网站上去取经就够了,去学习少数大神的开源库以及它们的一些代码片段也是非常重要的.

Whenever you dive into a library, such as AFNetworking or Magical Record, it is key to not be overwhelmed by the code you read. Chances are that you don’t understand every line of code in these libraries, but that’s not really the point. The point is to look at the source code from a higher level and learn as much as possible, such as naming conventions, best practices, design patterns, etc.

一旦你深入到了一个库,例如 AFNetworking 或者 Magical Record,不要被那些晦涩难懂的巨量的代码所吓尿了,你不可能懂得这些库里面的每一行代码每一处私密的地方,但是呢,那不是学习的要点所在哦,真正需要学到的是,从一个更高的角度来尽可能的学习它们,例如一些常用的使用方法,设计优秀的地方,设计模式等等诸如此类.

In addition to learning from other people’s code, it is a good learning experience to create your own libraries. Some time ago, I was developing an application that uses Core Data as the data layer. Instead of using Magical Record, I decided to create my own library by exploring Magical Record and recreating the pieces of functionality that I needed. Not only did this result in a lean, agile library, it also taught me a lot about the inner workings of Magical Record.

除了去学习别人的代码之外,另一种好的学习经验就是创建你自己的库.long long ago, 我在开发一个应用程序时,那个...用到了Core Data作为应用程序的data层,而不是用Magical Record,我决定创建我自己的库,从Magical Record中寻求灵感以及提取出我自己想要的功能,最后呢,我不仅创建出了一个瘦小的灵活的库,而且,我还学习到了Magical Record中很多的核心设计方法.


3. Don’t Copy and Paste

This brings me to another key aspect of learning the right way: don’t mindlessly copy and paste code. We all use code snippets that we find on places like Stack Overflow or Apple’s Developer Forums, but it’s important to not mindlessly copy and paste the code that you find on the web. By copying code that you find, you don’t learn a thing. The greater danger is that you don’t know what you’ve just added to your code base. This might result in unexpected behavior and it will make it very difficult to debug your code later.

我的另外一个好的学习经验是:不要脑残的复制和粘贴别人的代码.或许我们都会从 Stack Overflow 或者 Apple's Developer Forums 中找到些代码片段来使用,但请不要随意的从网上下载代码然后无脑的进行复制粘贴.你用了你的不经过前额思考过的代码,你啥也不懂,而且,一个很大的风险是,你根本就不知道到底加了什么鬼东西到你的工程中,这个也许会出现各种奇葩的问题,而且,接下来,你得面对痛苦的debug过程,估计也搞不定的^_^.

It may be tempting from time to time to quickly use a code snippet that seemingly solves the problem that you are working on, but I strongly urge against this practice. Read the code, understand what you are adding into the code base, and, possibly, customize the solution to your needs.

一次又一次的快速的无脑的使用了别人的代码片段且貌似解决了你当前的难题,这是如此的吸引人啊.但我强烈的反对这种方式,研究那些代码吧,至少你得知道把什么东西加进了你的工程中,最好的就是修改别人的代码以及定制出你自己需要的解决方法.

It goes without saying that this doesn’t apply to libraries or frameworks that are actively maintained. If you had to go through Magical Record before you’d be able to use it in your project… I’m sure you understand the difference. Use your common sense.

这可不是说叫你抛弃那些正在更新和维护的(第一方提供的)库和框架.[一句话翻译不了了,英语水平菜,理不清语法结构了-_-!!!]...我能确定,你将会体验到不同点,平时怎么整的就怎么整吧.


4. Patterns

Cocoa and Objective-C are in many ways very different from other programming languages and environments. This means that they have their own patterns and best practices. I’m sure that you’re already familiar with a few common patterns, such as delegation and notifications. However, there are many more patterns that can help you during your development, such as the singleton, observer, and command patterns. The Cocoa Fundamentals Guide gives you a nice overview of the most common patterns in Cocoa.

Cocoa 和 Objective-C 在某些地方,与其他的编程语言有着很大的差异哦,这意味着,它们都有着它们自己的一种模式和一种最适合自己的编程方式.我相信,你已经对一些常用的设计模式如代理和通知模式有所了解.然而,还有着其他的一些(设计)模式能够帮助你开发,诸如单例.观察者.和指挥者模式.这本书 Cocoa Fundamentals Guide 能给你一个较为全面的关于Cocoa中使用到的一些设计模式的指导.

5. Know Your Tools

Becoming a great developer isn’t only about understanding the language and the frameworks. It is just as much about working efficiently with the tools that you use day in and day out. For iOS development, this means Xcode and possibly other tools, such as PonyDebugger andCharles.

了解了语言特性以及各种框架就能成为高手吗?想得美呢.你还得每天琢磨着怎么超高效的运用各种工具.对于开发IOS来说,这意味着要用好Xcode,还有其他的一些工具,比如PonyDebugger和Charles.

If you’d like to learn a few extra tricks, you may be interested in a previous quick tip that I wrote about this topic.

你不想学一些额外的编程技巧吗?这样的话,也许,你会对我之前写过的一些快速提示感点兴趣.


6. Stay Up To Date

Even if you can’t attend Apple’s yearly developer conference, WWDC, it is a good idea to browse the numerous session videos and watch the ones that spark your interest. The presentations are usually given by the engineers that work on the technologies covered in the session, which gives you detailed information and instructions about how to use them. It is also a great way to quickly get up to speed with those technologies.

你不能参加苹果每年一度的开发者大会?别急,那就去看大量的会议视频吧,那也是能够拓宽你的视野的.你能得到很多的益处,那些都是各种领域内牛逼的工程师所免费赠送的^_^,你能从里面得到很多的最新的信息,以及帮助你怎么去用他们.这可是一种让你赶上日新月异的科技的一种技巧哦.

There are many excellent developers that regularly write about their craft, such as Matt Gemmell, Aaron Hillegass, and Mike Ash. You can find a more extensive list in a previous post I’ve written for Mobiletuts+.

一些巨牛逼的开发者,经常会写写关于他们牛叉的工作的,如Matt Gemmel.Aaron Hillegass 和 Mike Ash,最近我已经把那份详细的变态人物列表分享在了Mobiletuts+网站上,来捧捧场吧.


Bonus: Learn Other Languages

I have noticed that my overall understanding of software development has improved significantly by learning new languages or working with new frameworks. The advantage of this approach is that you don’t limit your view of what is possible to the language that you are most familiar with.

我注意到了哦,我对于软件开发的综合能力,随着我去学习新的语言和使用新的框架而得到了显著的提升.也没想的那么容易,关键就是你不能够限制了自己的视野,不要把自己限定死在一种你最熟悉的开发语言中.

I recently dipped my toes in Ember.js and learned that the creators, Yehuda Katz and Tom Dale took inspiration from Cocoa. The implementation of the MVC (Model-View-Controller) pattern of Ember.js is a bit unconventional for a JavaScript framework, but it is not that surprising if you are familiar with Cocoa.

最近我染指了Ember.js,他的创建者 Yehuda Katz 和 Tom Dale 可是从Cocoa开发中得到的灵感哟.这个MVC设计的实现对于JaveScript 框架来说可是很奇葩的(非传统的),但是呢,如果你熟悉Cocoa,那也没啥了不起的.

There is no “best” language to write software in as they all have their pros and cons. The nice thing, however, is that they are all a little (or a lot) different and it’s those differences that makes learning new languages interesting and eye opening. Ruby, for example, was a real eye opener for me in terms of writing DRY (Don’t Repeat Yourself), readable, and clean code.

编写软件可没有什么最好的语言,每种语言都有其擅长的方面.好语言呢,就是那种它们只有一点点不同,然而就是这点点不同,让它学起来超级带感以及开阔视野.例如,Ruby,在编写DRY(别重复你自己),可读性和清新的代码方面令我大开眼界.


Conclusion

If you don’t want to put in the hours to become a better programmer, then you may want to reconsider why you wanted to become a programmer in the first place. However, if you get excited about a new library or tool that can help you in your development, then you probably won’t have a problem improving your skills over time. You really have to love what you do to become good at it and I think this is especially true for programming. No matter what people tell you, you won’t become an expert developer overnight, but I promise you that your skills will improve if you keep learning and beating on your craft.

如果你不想花费时间用在刀刃上一天到晚就知道dota.DNF.英雄联盟啊,你就得重新想想你能成为牛逼的开发者么?如果,一个新的库或者工具能够帮助你开发,你还乐于去使用它学习它,提升能力就指日可待.你真的需要喜欢上自己要做的事情,只有这样你才能真正的提高自己.不管别人怎么告诉你,你都不可能靠一个晚上就变成老手,但是,我知道,只要你能够坚持下去,你的能力一定能够得到提升!

转载于:https://www.cnblogs.com/YouXianMing/p/3631577.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/432742.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[nodejs]国内npm安装nodejs modules失败的几个解决方案

使用npm安装node模块时经常有卡住安装失败的情况&#xff0c;如图所示。原因在于npm服务器在美国&#xff0c;还有就是某强大的防火墙作用。这样的问题导致很多新手放弃使用node&#xff0c;几乎每天都有新手再问这个问题。现在分享一下解决这个问题的解决方案 1.可以通过一劳永…

java 合并单元格 把数据合并没了_合并单元格

合并单元格同样也是在表格中进行&#xff0c;关于合并单元格我们需要了解的两个概念&#xff1a;colspan 合并列&#xff0c;rowspan 合并行。colspan(跨列)合并列&#xff1a;colspan属性常用在 td 中&#xff0c;用来指定单元格横向跨越的列数。比如&#xff1a;将下面表格的…

一步步学习微软InfoPath2010和SP2010--第九章节--使用SharePoint用户配置文件Web service(2)--在事件注册表单上创建表单加载规则...

下面练习中&#xff0c;你将添加表单加载规则&#xff0c;将四个文本框域和图片控件与用户配置文件web service连接。当使用用户配置文件web service时&#xff0c;你需要将控件和来自web service合适的域绑定。这个过程需要用户配置文件架构的导航和筛选&#xff0c;来抽取合适…

光耦驱动单向可控硅_华越国际一文带路:可控硅触发设计技巧

序可控硅(Silicon Controlled Rectifier,简称SCR)&#xff0c;是可控硅整流元件的简称&#xff0c;是一种具有三个PN结的四层结构的大功率半导体器件&#xff0c;亦称为晶闸管。具有体积小、结构相对简单、功能强等特点&#xff0c;是比较常用的半导体器件之一。家用电器中的调…

Servlet JSP系列文章总结

前言 谢谢大家的捧场&#xff0c;真心感谢我的阅读者。 all 下一期&#xff0c;重点在 数据结构和算法 &#xff0c;希望给大家带来开心。已经出了几篇&#xff0c;大家爱读就是我的开心。 Servlet & JSP系列总结 博客&#xff0c;呵呵&#xff01;很开心&#xff0c;认识…

一般通话记录能保存多少条_鸡蛋放冰箱,能保存多少天?正确保存方法是什么?...

鸡蛋是我们经常吃的食物&#xff0c;很多家庭都会经常的买鸡蛋吃。相信大家买回来鸡蛋之后&#xff0c;普遍都是把鸡蛋放入冰箱里&#xff0c;什么时候想吃什么时候拿一个。但是大家可能不知道的是&#xff0c;鸡蛋就算是放在冰箱里保存&#xff0c;也是有保质期的&#xff0c;…

基本矩阵运算的Java实现

基本矩阵运算的Java实现 分类&#xff1a; 图像处理2012-09-18 10:36 2537人阅读 评论(3) 收藏 举报javamatrixparametersstringclassnull一&#xff1a; 矩阵的加法与减法 规则&#xff1a;矩阵的加法与减法要求两个矩阵的行列完全相等&#xff0c;方可以完成两个矩阵的之间的…

json返回页面读取data里的值都是object_【一】尤大神都说Vite香,让我来手把手分析Vite原理...

戳蓝字"前端优选"关注我们哦&#xff01;一.什么是Vite&#xff1f;法语Vite(轻量&#xff0c;轻快)vite 是一个基于 Vue3单文件组件的非打包开发服务器&#xff0c;它做到了本地快速开发启动、实现按需编译、不再等待整个应用编译完成的功能作用。对于Vite的描述&am…

e记法 python 底数_备战python二级

明天考试去&#xff0c;滚吧提醒与分值&#xff1a;1*40&#xff08;选择&#xff09;5*3&#xff08;填空&#xff09;101520比如今年的一个题目是要求随机抽一个手机品牌&#xff0c;这道题目的关键点在于你要使用seed()函数覆盖原来的给定的种子seed(1)&#xff0c;因为要求…

V210 UART TX 流程

1. 虽然V210的uart驱动是平台总线设备驱动模型&#xff0c;但实际上他还是以字符设备驱动存在&#xff0c;那么分析他的发送流程&#xff0c; 首先找到他的file_operations的write函数 drivers/char/tty_io.c tty_write(struct file *file, const char __user *buf, size_t cou…

浙江省计算机二级办公软件高级应用分值,浙江计算机二级高级办公软件word题分值是多少...

计算机文化基础试题集(浙江省计算机办公室软件等级考试悬赏分&#xff1a;10 - 离问题结束还有 12 天 23 小时一、选择题((1)&#xff5e;(30)每小题1分&#xff0c;(31)&#xff5e;(55)每小题2分&#xff0c;共80分)下列各题 A) 、B)、C)、D)四个选项中&#xff0c;只有一个选…

pppd 源码修改1

1. pppd拨号成功后&#xff0c;会将解析到的dns服务器IP地址&#xff0c;写入/etc/ppp/resolv.conf 这样的话&#xff0c;gethostbyname_r并不会识别&#xff0c;并且&#xff0c;如果有启动两路pppd的话&#xff0c;后面一路会将resolv.conf文件重写。 因此&#xff0c;这块代…

location.href属于重定向还是转发_servlet2 单元测试、转发、重定向

解决服务端接收数据乱码问题。服务器默认采用 ISO8859-1 编码响应内容。// 1req.setCharacterEncoding("utf-8");// 2 byte[] bytes req.getParameter("username").getBytes("iso-8859-1"); System.out.println("username:" n…

如何在CSDN博客中的所贴的代码进行【代码块】显示

笔者最近很喜欢在csdn发一些技术博客&#xff0c;可是看了别人的博客&#xff0c;有代码的地方总是可以显示出代码块&#xff0c;而自己贴上去的代码总是没有。刚开始还以为CSDN博客里面的编辑功能有&#xff0c;可是找来找去都没有找到。后来才发现原来需要自己在源码上进行修…

学安全工程用不用计算机,上重点大学的末流专业,不如上普通大学的重点专业,你赞成吗?...

上重点大学的末流专业&#xff0c;不如上普通大学的重点专业&#xff0c;你赞成吗&#xff1f;首先&#xff0c;我对这个说法不赞成&#xff0c;这个说法是错误的。可以说&#xff1a;基本上说的是对的也是错的。说对的&#xff0c;是这个思路是对的&#xff0c;说错&#xff0…

ORACLE复杂查询之连接查询

一、传统的连接查询 1、交叉连接&#xff1a;返回笛卡尔积 WHERE中限定查询条件&#xff0c;可以预先过滤掉掉不符合条件的记录&#xff0c;返回的只是两个表中剩余记录&#xff08;符合条件的记录&#xff09;的笛卡尔积。 2、内连接&#xff1a;参与连接的表地位平等&#xf…

12306加密传输_三大运营商发5G消息白皮书:短消息服务升级,支持加密传输

4月8日&#xff0c;中国电信、中国移动、中国联通联合举行线上发布会&#xff0c;共同发布《5G消息白皮书》。《白皮书》阐述了5G消息的核心理念&#xff0c;明确了相关业务功能及技术需求&#xff0c;提出了对5G消息生态建设的若干构想。据介绍&#xff0c;5G消息业务是终端原…

winpe修复计算机无法启动,用winpe来修复无法进入系统的问题

很多网友都碰到过有的时候无法进入系统&#xff1f;不知道该怎么操作&#xff0c;U大师告诉你一个方法&#xff1a;那就是用winpe来修复无法进入系统的问题,可以先在硬盘上安装一个PE维护系统&#xff0c;重启电脑时在多重启动菜单选择Windows PE&#xff0c;系统便会自动进入P…

详细解说 STL 排序(Sort)

0 前言: STL&#xff0c;为什么你必须掌握 对于程序员来说&#xff0c;数据结构是必修的一门课。从查找到排序&#xff0c;从链表到二叉树&#xff0c;几乎所有的算法和原理都需要理解&#xff0c;理解不了也要死记硬背下来。幸运的是这些理论都已经比较成熟&#xff0c;算法也…

ad9生成坐标文件_GROMACS各种文件格式介绍

CPT文件&#xff1a;该文件为模拟断点文件(check point&#xff0c;.cpt)。该文件为模拟过程固定时间间隔产生&#xff0c;保存模拟系统所有信息。该文件一部分可以在能量文件(.edr)找到&#xff0c;一部分可以在双精度轨迹文件(.trr)中找到。如果模拟因为外界条件中断&#xf…