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