在程式設計之餘,有時候我就在想,什麼樣的程式設計師屬於高階程式設計師呢?或者說,高階程式設計師有哪些特性呢?工作年限一定不是一個關鍵的指標,許多工作多年的程式設計師依然寫不出優雅的程式。無論是在Android開發還是其他領域,高階程式設計師一定是勤奮的,可以快速地掌握大量的新技術、新框架,不僅懂得原理,還能把新的技術落地到公司的產品中去。這是衡量程式設計師工作能力的一個重要標準,那麼怎樣才能將技術運用自如呢?唯有實踐。基於此,我想把自己在日常實踐中的一些經典案例,編著成一本成體系的書,以便為想要進步的Android程式設計師增加更多的實戰經驗,這也是編寫本書的核心目的所在。
編寫本書的另外一個目的,是幫助程式設計師建立產品的思想,對於技術而言,孤立的存在是沒有任何意義的,技術只有與需求相結合,才能具有自身的價值。技術人員在開發的過程中,要時刻了解所完成的功能可以為公司帶來哪些價值,是提升使用者的訪問興趣,還是提升使用者的使用流暢度,抑或是其他。當以產品思維去思考技術的時候,就會有動力、有目的地學習更多有價值的技術,而不是譁眾取寵地學一些“看似有用”的新技術。
除此之外,還有理解架構的本質。一些技術人員經常會問:“為什麼要使用架構?這隻會增加額外的程式碼量,而且並不會對功能或效能有所提升,只需要完成必要的開發任務即可。”這種想法是非常淺顯的,因為任何一個應用都不是一次成型的,需要不斷地迭代,不斷地擴充套件,同時需要不斷地修改已有的業務邏輯,這就會涉及系統相容性的問題。如何修改新的業務邏輯而不影響舊的業務邏輯?如何最大限度地複用已有的業務邏輯?架構就是解決這類問題的鑰匙,一個優秀且合適的專案架構可以保證系統的穩定性,當開發新的功能或者修改舊的功能時,不至於破壞已有的業務體系。
本書的例項都是經典實戰例項,每一個例子都代表一類在開發中需要掌握的技巧。本書由淺入深地逐個講解需要掌握的開發理論與實踐,共分為七部分。
◎ 進階基礎:偏重於原始碼的解析和理解,介紹閱讀原始碼的技巧,以Activity和View為例,管中窺豹地分析其中的基礎知識。讀者也可依據此類方法,分析其他系統元件的原始碼。
◎ 高階控制元件:介紹若干複雜的控制元件佈局,即AppBarLayout、CoordinatorLayout和ConstraintLayout。通過例項,讓讀者理解在複雜控制元件佈局中子檢視是如何組合和相互關聯的。
◎ 專案架構:分析主流架構的設計思想,即Google推薦的MVP和MVVM,還有Facebook的Flux。理解這些架構是如何組織和管理大型專案的,以及它們的優點和缺點各有哪些。
◎ 響應式程式設計:響應式是一種程式設計思想,在處理網路請求和功能測試時,基於響應式框架的專案擁有更好的可擴充套件性和可維護性,響應式程式設計三劍客即RxJava、Dagger和Retrofit。
◎ 酷炫功能與精美動畫:實現兩個稍複雜的功能,分別是基於第三方控制元件和基於系統控制元件的擴充套件;並實現兩個動畫效果,分別用於頁面展開和頁面切換。對於功能和動畫,不同的需求或樣式層出不窮,本部分側重於開發思路的分享。
◎ Kotlin與SVG:Kotlin是用於替代Java的高階程式語言,SVG是用於替代PNG格式的影象技術,本書著重介紹一些基礎概念,提綱挈領,以便於讀者後續進行自主學習。
◎ 測試與優化:分享一個主流的自動化測試框架,以及優化記憶體與電量的一些常見方法。產品的效能與功能同樣重要,應用的高品質也會提升產品的使用者體驗。
這七部分幾乎已經包含高階Android程式設計的全部內容,本書的每個部分都會通過多個例項,從不同的角度引領讀者親身實戰,真正地掌握高階程式設計的核心開發技巧。但是,例項的數量終究有限,希望讀者更多地關注於實戰中的開發思想,而不是具體的程式碼邏輯,程式碼總會不斷地更迭,解決問題的思維卻歷久彌新。本書中的例項更多的是以點帶面,讀者可以一邊閱讀和思考,一邊編寫程式碼,相信讀完本書,一定受益匪淺;同時,通過本書的例項可以解決一些常見的開發需求。衷心希望每位讀者在閱讀完本書之後,都“不虛此行”!
2018年7月於北京海淀
《高階Android開發強化實戰》京東連結:https://item.jd.com/12385680.html