iOS開發(fā):從新手到專家的一些建議
雖然你有可能在一周內(nèi)學(xué)習(xí)到iOS開發(fā)的本質(zhì),但想要精通iOS開發(fā)需則要花費(fèi)更長(zhǎng)的時(shí)間。問題是你如何從新手變成專家?在這篇文章中,我們主要就這個(gè)主題給出一些建議(如果你有好的建議和相關(guān)文章歡迎分享給更多開發(fā)者):
1.練習(xí),練習(xí)還是練習(xí)
iOS開發(fā)沒有捷徑可走。這是我在繼續(xù)這個(gè)話題之前需要強(qiáng)調(diào)的東西,因?yàn)閿[脫任何常常浮現(xiàn)于你腦海的幻想很重要。如果你僅僅在星期天的4PM和 5PM之間學(xué)習(xí)/練習(xí)編程,那么你不會(huì)成為一個(gè)熟練的iOS開發(fā)者。不要誤會(huì)我的意思,這么做可能會(huì)很有趣,但是它很難讓你成為一個(gè)老練的專業(yè)的iOS開 發(fā)者。除了極少數(shù)的人,大部分人都需要不斷的練習(xí)和實(shí)踐。如果你還沒有準(zhǔn)備好投入大量時(shí)間,這時(shí)候最好重新審視你的目標(biāo)和理想。
2.向其他人學(xué)習(xí)
提升開發(fā)技能和采用最佳實(shí)踐的最好策略之一是學(xué)習(xí)別人的代碼。這不僅僅意味著瀏覽Stack Overflow,但更重要的是其他開發(fā)者的各種開源類庫(kù)和代碼片段。
不管何時(shí)你一頭扎進(jìn)各種類庫(kù)的學(xué)習(xí),比如AFNetworking或者Magical Record,很關(guān)鍵的一點(diǎn)是不要被各種代碼淹沒。有可能你不理解各種庫(kù)中的代碼,但這不是真正的關(guān)鍵,重點(diǎn)是從一個(gè)更高的層次來看源碼和盡可能多地學(xué)習(xí),比如命名規(guī)范、最佳實(shí)踐以及設(shè)計(jì)模式等。
除了學(xué)習(xí)別人的代碼外,創(chuàng)建你自己的類庫(kù)是一個(gè)最好的學(xué)習(xí)方法。不久前,我用Core Data作為數(shù)據(jù)層開發(fā)了一款app,我沒有使用Magical Record,我決定通過學(xué)習(xí)Magical Record創(chuàng)建自己的庫(kù),并重新創(chuàng)建了我需要的功能。這種方法不僅幫我創(chuàng)建了一個(gè)更加靈活的庫(kù),也讓我學(xué)習(xí)到很多Magical Record內(nèi)部的工作原理。
3. 不要僅僅復(fù)制和粘貼
這一點(diǎn)讓我看到了正確學(xué)習(xí)方式的另一個(gè)關(guān)鍵面:不要不動(dòng)腦子簡(jiǎn)單地復(fù)制和粘貼。我們常常會(huì)使用我們?cè)?a target="_blank" >Stack Overflow或者蘋果開發(fā)者論壇找到的各種代碼片段,但是不要為了偷懶簡(jiǎn)單地復(fù)制粘貼你從網(wǎng)絡(luò)上找到的代碼,這樣你很難徹底理解它。最大的危險(xiǎn)在于這可能會(huì)導(dǎo)致意外的行為,以致于你的代碼以后都很難調(diào)試和修復(fù)。
有時(shí)候,復(fù)制別人的代碼片段看著可能已經(jīng)解決了你遇到的問題,但是我強(qiáng)烈建議不要這么做。閱讀代碼,理解你往代碼庫(kù)添加的東西,可能的話定制你 需要的解決方案。不用說,這并不適用于開發(fā)者積極維護(hù)的庫(kù)或框架。在項(xiàng)目中使用Magical Record前,如果你需要仔細(xì)檢查它,那么我確信你已經(jīng)理解了不同之處。使用你自己的常識(shí)。
4. 模式
Cocoa和Objective-C在很多方面都不同于其他編程語(yǔ)言和環(huán)境。這意味著他們有自己獨(dú)特的模式和最佳實(shí)踐。我確信你已經(jīng)熟悉了一些常見的模式,比如委托和通知。但還有很多模式可以開發(fā)過程中幫助你,比如單例模式、觀察者模式以及通用模式等。Cocoa Fundamentals Guide很好地概述了Cocoa中大部分常用模式。
5.了解你的工具
作為一個(gè)開發(fā)者并不僅僅是理解語(yǔ)言和框架,理解你每天使用的工具同樣重要。對(duì)于iOS開發(fā)來說,這意味著你需要很好地理解Xcode和其他可能用到的工具,比如PonyDebugger和Charles。如果你想學(xué)習(xí)一些額外的技巧,你可能會(huì)對(duì)我此前的一篇文章(iOS Quick Tip: 7 Tips to Speed Up Your Development)感興趣。
6.與時(shí)俱進(jìn)
即使你不能參加蘋果一年一度的開發(fā)者大會(huì)--WWDC,但瀏覽大量的會(huì)議視頻是個(gè)很好的學(xué)習(xí)方法,你可以觀看你感興趣的專題視頻,它們都是由在 某方面擅長(zhǎng)的工程師演講,他們可以告訴你一些細(xì)節(jié)信息以及相關(guān)使用說明。另外,你還可以多關(guān)注優(yōu)秀的開發(fā)者,他們會(huì)定期寫一些技術(shù)文章,比如比如Matt Gemmell、 Aaron Hillegass以及Mike Ash,你可以在我為Mobiletuts+寫的這篇“Where To Go Next”文章中找到更多學(xué)習(xí)資源。
7.學(xué)習(xí)其他語(yǔ)言
我已經(jīng)注意到學(xué)習(xí)新語(yǔ)言或者使用新框架讓我對(duì)軟件開發(fā)的整體理解有了明顯提高。這種方法的優(yōu)點(diǎn)在于不會(huì)限制你對(duì)最熟悉語(yǔ)言的認(rèn)知和它潛在可能性的理解。我最近在研究Ember.js,并了解到它的創(chuàng)建者 Yehuda Katz和Tom Dale是從Cocoa獲得的靈感。Ember.js對(duì)mvc的實(shí)現(xiàn)并沒有遵循JavaScript framework,不過如果你熟悉cocoa的話,就不會(huì)感覺到奇怪了。
對(duì)于軟件開發(fā)來說,沒有最好的語(yǔ)言,每種語(yǔ)言都有自己的優(yōu)勢(shì)和劣勢(shì)。但是好的一面在于或多或少他們都有所不同,這使得學(xué)習(xí)新語(yǔ)言變得更加有趣和 更有啟發(fā)性。比如對(duì)我來說,Ruby在寫DRY (Don’t Repeat Yourself)、易讀的、干凈的代碼方面讓我大開眼界。
總結(jié)
如果你不想花費(fèi)時(shí)間成為一個(gè)更好的程序員,那么你可能要重新考慮下為什么你把成為一個(gè)程序員擺在首位。但如果你會(huì)因?yàn)橐粋€(gè)可以幫你的新類庫(kù)或者 開發(fā)工具而興奮,那么隨著時(shí)間的流逝,你在提高自身技能方面可能不會(huì)有什么問題。你真的必須熱愛你所做的事情,并在這面擅長(zhǎng),這一點(diǎn)尤其適用于編程。不管什么人告訴你,你不會(huì)在一夜之間成為一個(gè)老練的開發(fā)者,但如果你保持不間斷的學(xué)習(xí),并細(xì)心打磨自己的“手藝”,我想你的技術(shù)會(huì)有很好的提高。