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