2016 年技術(shù)總結(jié)

記得去年寫年終總結(jié)的時候到旦,我還在去看老友的火車上,那時對新一年充滿了無數(shù)期許巨缘,雖已是爭分奪秒添忘,但是當宣布 game over 的那一刻,這一年的收獲若锁、成長搁骑、遺憾、失落已經(jīng)定格又固。

內(nèi)容提要

  • MVP 架構(gòu) App
  • 浮窗組件開源
  • NodeJs 全棧開發(fā)
  • App web 化發(fā)展趨勢
  • 年度博客總結(jié)

MVP 架構(gòu) App

針對項目中結(jié)構(gòu)混亂仲器,分層不清晰,提出 MVP 架構(gòu)的想法仰冠,經(jīng)過內(nèi)部分享乏冀,試點實踐,最終于五六月份在 MVP 的基礎(chǔ)加上 EventBus 全面重構(gòu)沪停。 架構(gòu)的收益是持續(xù)的煤辨,去掉了耦合在各個層面上回調(diào)函數(shù)裳涛,從架構(gòu)層面上規(guī)避了最常見的內(nèi)存泄漏問題,同時由于層之間的高度解耦众辨,使得我們可以針對不同層次使用不同的單元測試框架端三,大大降低了寫單元測試的成本。

盡管 MVP 和 EventBus不算什么新技術(shù)鹃彻,但對我們的項目來說是第一次郊闯,作為一個團隊的一員,要引入新的技術(shù)或新的想法不是一件容易的事蛛株。你得說服你的老大還有你的同事团赁,你不能干巴巴的說這個技術(shù)好然后你的同事就能信服你,特別是技術(shù)水平和視野上的差異谨履,沒有認知上的共鳴欢摄,你很難推動實施。作為團隊的新面孔笋粟,我也是費了很多波折怀挠,開始在小組內(nèi)做 MVP 的分享,再后來是在新接手的業(yè)務(wù)帶頭實踐 MVP 害捕,真正讓大家全面認可是下面的經(jīng)歷:

大約是4绿淋、5月的時候,隨著功能的增加尝盼,各處隱藏的內(nèi)存泄漏問題終于累積到了一個爆發(fā)點吞滞,大量引發(fā) OOM 問題。經(jīng)過內(nèi)存工具排查盾沫、反復測試裁赠、觀察內(nèi)存走向,游走大部分歷史代碼終于解決了問題疮跑。我把解決過程詳細的寫成了兩篇內(nèi)部分享文章组贺,鞭尸了 n 多個黑代碼(很多人為了怕影響同事關(guān)系,寧愿容忍渣代碼祖娘,也不愿指出錯誤失尖,我很不贊同這種價值觀,對于技術(shù)氛圍的形成十分有害渐苏,渣代碼就是要鞭尸,我覺得應(yīng)該提倡 review ,彼此鞭尸渣代碼掀潮。),內(nèi)存溢出并不是在某個功能點琼富,而是散布在各個地方的 Handler 仪吧,這些 Handler 讓各個層次藕斷絲連。為了規(guī)避這些問題鞠眉,才有了后來的 MVP + EventBus薯鼠,它才開始真正被接納择诈。

關(guān)于在團隊中引入新技術(shù),除了溝通能力之外出皇,你應(yīng)該還要做到兩點:1 明白項目的問題在哪里羞芍,2 用你要引入的技術(shù)解決當下的問題,3 對于新的技術(shù)郊艘,團隊成員成本多大荷科,例如當時想本要使用 RxJava ,考慮到當時團隊成員的學習成本就使用較為容易上手的 EventBus 了纱注。

浮窗組件開源

為了方便玩家游戲過程不用切換游戲也能方便地體驗我們的 App 的服務(wù)畏浆,我們需要"伸出一雙手"到游戲中,在合適的位置狞贱、合適的時間出現(xiàn)刻获。等于將 App 的功能閹割到浮窗中,所以邏輯還是比較復雜斥滤,經(jīng)過幾個版本下來遇到了很多坑将鸵,特別是在版本兼容問題上,在解決這些問題之后我覺得應(yīng)該把浮窗組件沉淀一下佑颇,開源出來:https://github.com/liuguangli/FloatUtil

插件化研究

在進行浮窗功能設(shè)計的時候草娜,一開始打算做成插件的形式挑胸,花了大量的時間進行插件化的研究,看了幾大開源框架宰闰,對于設(shè)計模式茬贵、Android 框架、App 加載和執(zhí)行等都是一次進階性的提升移袍,最后形成了插件化研究的系列文章:

NodeJs 全棧開發(fā)

App 客戶端的需求越來越少解藻,剛好后端要做業(yè)務(wù)重構(gòu),進行前后端分離葡盗,主動申請參與前端的開發(fā)螟左,從無到有參與前端 NodeJs 項目架構(gòu)并支撐第一個新業(yè)務(wù)的上線。前后端分離觅够,在組織架構(gòu)上也算是一種解耦胶背, 為了讓后端從"代碼套頁面"的噩夢中解放出來、更加專注于數(shù)據(jù)業(yè)務(wù)的開發(fā)喘先,后端面向細粒度 API 開發(fā)钳吟,只關(guān)注服務(wù)和接口;NodeJs 作為服務(wù)到用戶的中間層窘拯,面向用戶側(cè)的開發(fā)红且,關(guān)注交互和界面坝茎,提供多端特性的適配。

App web 化發(fā)展趨勢

3 月份大家還在大談插件化暇番、這個時候插件化已是百花齊放景东,React Native (簡稱 RN)已經(jīng)在各大技術(shù)沙龍分享實戰(zhàn)經(jīng)驗,2015 年 9 月 RN 發(fā)布開源奔誓,這是一次 App 跨平臺開發(fā)思路上的突破:Web 方式編程斤吐,原生化的體驗。

2016 年 6 月厨喂,阿里開源 Weex 和措; 2016 年 9 月,微信小程序開放內(nèi)測蜕煌;RN派阱、Weex 和小程序 在思路上是一致的:采用某一種 Web 編程技術(shù)編寫頁面,生成的 js 部署到服務(wù)器斜纪,然后下發(fā)到客戶端贫母,客戶端 App 上搭載一個 JS 解釋器,最終轉(zhuǎn)換成 Native 組件盒刚。 三者實現(xiàn)手段上略有差異腺劣,RN 采用 React 的語法編寫程序邏輯,客戶端采用 JavascriptCore 作為 js 解釋器因块;Weex 采用 Vue 語法編程橘原,客戶端使用 V8 內(nèi)核作為 Js 運行環(huán)境;微信小程序可能和前兩種差稍有不同涡上,稍微進化得慢一些趾断,小程序提供的編程方式和 Weex 很相似,不過最終下發(fā)到客戶端執(zhí)行的還是 html 和 js 文件吩愧,最后由 X5 內(nèi)核來執(zhí)行 html 和 js芋酌。

RN、Weex 和微信小程序讓我看到的是一種編程方式的變化雁佳,App 原生開發(fā)和 Web 開發(fā)正在統(tǒng)一脐帝。微信小程序的出現(xiàn)一度引起很多討論,其中就有關(guān)于小程序是否會吞并 App 的討論甘穿,我倒是對此不以為然腮恩,不過我思考的是:微信小程序能做到、Weex 能做到温兼、RN 能做到秸滴,那么 OS 來做不也是輕而易舉的事么?這樣的 OS 一定會到來吧募判?(這時荡含,我不由得把視角轉(zhuǎn)向了 Google 咒唆,據(jù)說 Google 內(nèi)部正在融合Chrome OS 和 Android,將推出 Andromeda 操作系統(tǒng)释液。)那個時候才是真正的大一統(tǒng)全释。技術(shù)發(fā)展一直遵循著摩爾定律,性能误债、帶寬逐年提升浸船,Web 和 原生的體驗差距在慢慢變小App web 化開發(fā)一定是一種趨勢。

年度博客總結(jié)

1 插件化系列文章寝蹈,總結(jié)了插件化開發(fā)的基本思想概論李命。

2 浮窗系列文章,總結(jié)了Android 窗口體系的相關(guān)知識點箫老。

3 物聯(lián)網(wǎng)入門系列文章封字,總結(jié)了 NodeJs 在硬件領(lǐng)域的使用,使用 Ruff 來 DIY 自己的家電耍鬓。

4 經(jīng)驗阔籽、思維、方法論

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末牲蜀,一起剝皮案震驚了整個濱河市笆制,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌各薇,老刑警劉巖项贺,帶你破解...
    沈念sama閱讀 207,113評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異峭判,居然都是意外死亡,警方通過查閱死者的電腦和手機棕叫,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評論 2 381
  • 文/潘曉璐 我一進店門林螃,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人俺泣,你說我怎么就攤上這事疗认。” “怎么了伏钠?”我有些...
    開封第一講書人閱讀 153,340評論 0 344
  • 文/不壞的土叔 我叫張陵横漏,是天一觀的道長。 經(jīng)常有香客問我熟掂,道長缎浇,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,449評論 1 279
  • 正文 為了忘掉前任赴肚,我火速辦了婚禮素跺,結(jié)果婚禮上二蓝,老公的妹妹穿的比我還像新娘。我一直安慰自己指厌,他們只是感情好刊愚,可當我...
    茶點故事閱讀 64,445評論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著踩验,像睡著了一般鸥诽。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上箕憾,一...
    開封第一講書人閱讀 49,166評論 1 284
  • 那天牡借,我揣著相機與錄音,去河邊找鬼厕九。 笑死蓖捶,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的扁远。 我是一名探鬼主播俊鱼,決...
    沈念sama閱讀 38,442評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼畅买!你這毒婦竟也來了并闲?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,105評論 0 261
  • 序言:老撾萬榮一對情侶失蹤谷羞,失蹤者是張志新(化名)和其女友劉穎帝火,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體湃缎,經(jīng)...
    沈念sama閱讀 43,601評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡犀填,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,066評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了嗓违。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片九巡。...
    茶點故事閱讀 38,161評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖蹂季,靈堂內(nèi)的尸體忽然破棺而出冕广,到底是詐尸還是另有隱情,我是刑警寧澤偿洁,帶...
    沈念sama閱讀 33,792評論 4 323
  • 正文 年R本政府宣布撒汉,位于F島的核電站,受9級特大地震影響涕滋,放射性物質(zhì)發(fā)生泄漏睬辐。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,351評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望溉委。 院中可真熱鬧鹃唯,春花似錦、人聲如沸瓣喊。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,352評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽藻三。三九已至洪橘,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間棵帽,已是汗流浹背熄求。 一陣腳步聲響...
    開封第一講書人閱讀 31,584評論 1 261
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留逗概,地道東北人弟晚。 一個月前我還...
    沈念sama閱讀 45,618評論 2 355
  • 正文 我出身青樓,卻偏偏與公主長得像逾苫,于是被迫代替她去往敵國和親卿城。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 42,916評論 2 344

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 171,527評論 25 707
  • 原創(chuàng) 2016-12-27 徐川 移動開發(fā)前線 目錄 前言 平臺篇 iOS平臺 Android平臺 iOS開發(fā)技術(shù)...
    iOS菜鳥攻城獅閱讀 506評論 0 4
  • 盡管很多媽媽都知道新生兒由于生理原因才容易導致吐奶,但一看到自家寶寶吐奶時星掰,還是緊張得不知所措多望。下面將會為你詳細介...
    第6通道閱讀 2,832評論 0 0
  • 我姓穆 我心怒/我心慕 我姓穆卻只能在人群中默默仰慕你 大概是因為你喜歡黎明而我姓穆
    麥子小穆閱讀 129評論 0 0
  • 我是從什么時候開始迷戀上旅行的?具體不是特別清楚氢烘,不過這種念頭的萌生怀偷,一定是在年齡的支撐之上,既大到可以會被“旅...
    Char_閱讀 261評論 0 0