剛開始 Android狡蝶,手頭邊就一直放在一本《Android 編程權(quán)威指南(第 2 版)》(圖靈社區(qū)出品,中譯版)夷恍。更準(zhǔn)確來說,是拿來在床頭放著媳维,每天睡覺的時(shí)候看看酿雪,有助睡眠……
作為一名從來只為五斗米折腰的小碼農(nóng),晚上做夢(mèng)的時(shí)候侄刽,常常立志要成為如喬幫主那般“活著只是為了改變世界”指黎,白天上班的時(shí)候,感覺自己就是“活著只是為了消滅 BUG 和寫好產(chǎn)品文案”唠梨。
為了消滅 BUG袋励,電腦桌上擺放了不少 Android 的參考書籍,如《第一行代碼》当叭、《Android 經(jīng)典項(xiàng)目開發(fā)實(shí)戰(zhàn)》、《Android 群英傳》盖灸、《Android 開發(fā)藝術(shù)探索》等等的一大套書籍蚁鳖,盡管這些參考書都只是僅僅以瀏覽的方式走馬觀花了一遍。
這邊《Android 編程權(quán)威指南(第 2 版)》(以下簡稱“《Android 指南》”)相比其他的 Android 參考書而言赁炎,十分具有老外的寫書風(fēng)格醉箕,就是總是喜歡講故事和扯案例,而老是不對(duì)那些理論進(jìn)行抽象地徙垫、理論地概況讥裤。這本書的全部內(nèi)容,用一句話地概括姻报,就是羅里吧嗦地扯了 8 個(gè) Android App 是如何做出來的己英。
說真的,剛開始看這本書的時(shí)候吴旋,心里“Duang”地一下子就崩潰了损肛。說好的編程權(quán)威指南呢厢破?說好的全面培訓(xùn)教材呢?說好的大名鼎鼎的 Big Nerd Ranch 訓(xùn)練營培訓(xùn)講義呢治拿?就是講了這 8 個(gè) App 是怎樣做出來摩泪,然后就全書的主要內(nèi)容了?
也許作為小白碼農(nóng)劫谅,才疏學(xué)淺见坑,看不懂其中的奧秘。于是乎捏检,也就硬著頭皮地往下看了荞驴,幻想看著看著就能打通編程的任督二脈了?……夢(mèng)想很豐滿未檩,現(xiàn)實(shí)很骨感戴尸,直到看完整本書,也還是感覺 Android 編程是高深莫測(cè)冤狡。
看來孙蒙,面對(duì)高深莫測(cè)的 Android 神功,神馬參考書也是只能大概呵呵了悲雳。
不過挎峦,對(duì)于老外寫的這些編程書,看多了也逐漸發(fā)現(xiàn)了他們的一個(gè)寫書傳統(tǒng):以項(xiàng)目產(chǎn)品開始合瓢,也以項(xiàng)目產(chǎn)品結(jié)束坦胶,極少像國產(chǎn)編程書籍那樣,大段大段地引用 API 和闡釋理論晴楔。這應(yīng)該是老外對(duì)于編程的理解和咱們不同吧顿苇?
個(gè)人感覺,對(duì)于老外來說税弃,編程就是一門手藝纪岁,和建筑工人會(huì)砌墻和涂水泥,是沒有什么本質(zhì)的區(qū)別的则果。而咱們幔翰,似乎更多地是將編程看做一種技術(shù),和科學(xué)家研究量子力學(xué)西壮,是沒什么兩樣的遗增。
編程到底是什么呢?作為小白碼農(nóng)款青,我也不知道做修,當(dāng)然也不知道該如何才可以準(zhǔn)確地用科學(xué)的語言來精確地表達(dá)出“編程”這一概念。
打心底地相信,我更希望“編程”是一門手藝吧缓待,一門可以熟能生巧的求生技能蚓耽。畢竟俺還是得向五斗米而折腰呢。
如果從“手藝”的角度來再次閱讀這邊《Android 指南》旋炒,就大概能夠體諒這本書所傳達(dá)的溫度了步悠。
沒錯(cuò),你沒有聽錯(cuò)瘫镇,我也沒有寫錯(cuò)鼎兽,確實(shí)是“溫度”,一本有溫度的編程書铣除。
編程技術(shù)從來都是向前發(fā)展的谚咬,任何當(dāng)時(shí)看起來很牛很酷炫很高大上的技術(shù),都會(huì)因?yàn)槊嫦驅(qū)ο蟮挠绊懴律姓常环庋b起來择卦,變成一個(gè)個(gè)開放部分接口的對(duì)象。編程郎嫁,可以是科學(xué)秉继,因?yàn)樗诤狭擞?jì)算機(jī)科學(xué)家的畢生智慧精華,但也可以是手藝泽铛,因?yàn)樗枰姸嗨{(lán)領(lǐng)級(jí)的編程工人來將這些 API 組裝成一個(gè)個(gè)數(shù)據(jù)產(chǎn)品尚辑。對(duì)于蕓蕓眾生來說,是成為一名計(jì)算機(jī)科學(xué)家的概率大盔腔,還是成為一名編程工人的概率大杠茬?或許只有貝葉斯概率才知道了。
《Android 指南》一書弛随,確實(shí)起到了“指南”的作用瓢喉,用 8 個(gè) App 來比較完整地描述了這項(xiàng) Android 手藝的編程學(xué)習(xí)方法。盡管這 8 個(gè) App 看起來怪怪的舀透,如用來做地理知識(shí)問答題的 GeoQuiz灯荧,記錄辦公室同事種種陋習(xí)的 Criminallntent,奇葩得用來震懾?cái)橙说?BeatBox盐杂,沒什么實(shí)際用途的個(gè)性化啟動(dòng)器NerdLauncher,要翻墻才能下載到?Flickr 里照片的 PhotoGallery哆窿,使用屏幕來玩 # 字游戲的DragAndDraw链烈,看落日動(dòng)畫的 Sunset,以及在我朝用不了谷歌地圖來查詢位置的 Locatr挚躯,盡管不能說全面地描述了 Android 編程的方方面面强衡,但是大概的脈絡(luò)確實(shí)是描述清楚了。畢竟這本書的最高 Android 版本是 5.1码荔,最新的 Android 7.0 的功能描述漩勤,建議還是去看郭大俠的《第一行代碼(第二版)》吧感挥。
這本《Android 指南》,相比國內(nèi)的眾多參考書來說越败,除了扯了 8 個(gè)App外触幼,還十分認(rèn)真地研究了如何用 MVC 的設(shè)計(jì)模式來理解和編寫 Android 應(yīng)用,這算是本書的一大“絕活”吧究飞。任何手藝必定有套路置谦,任何武功必定有心法。對(duì)于 Android 這門手藝來說亿傅,在本書的作者看來媒峡,MVC 應(yīng)該算得上是“九陽真經(jīng)”之類的上乘心法吧?此法熟練者葵擎,加之修煉有“乾坤大挪移”之威名的面向?qū)ο笏季S方法谅阿,并結(jié)合宛如“太極八卦”般玄妙的設(shè)計(jì)模式,就能從此成為一代編程江湖高手了吧酬滤?上述修煉訣竅僅供用于YY签餐,做人嘛,還是腳踏實(shí)地為好敏晤,老老實(shí)實(shí)地從一行一行的代碼開始練起吧贱田。
哆哆嗦嗦地說了一大堆,基本上都是泛泛而談的東西嘴脾,不怎么涉及代碼分析男摧,說實(shí)在地,能力有限译打,有心無力啊耗拓。
最后,還是引用本書中《如何學(xué)習(xí) Android 開發(fā)》一文中奏司,最為樸素?zé)o華的一句話作為結(jié)尾吧:“在 Big Nerd Ranch乔询,我們認(rèn)為,要成為一名合格的 Android 開發(fā)人員韵洋,必須做到:(1)著手開發(fā)一些Android應(yīng)用竿刁;(2)徹底理解你的 Android 應(yīng)用√掠В”
不斷死磕別人的代碼吧食拜,徹底理解自己的代碼吧,或許副编,可以成為一個(gè)“活著就是為了改變世界”的人负甸。