天天看點

從iOS開發到移動端架構 —— 新的開始

距離上次更新部落格已經将近半年了,在五一小長假之前,我準備抽出一段時間完成這篇部落格,算是對我這段“失蹤”時間的總結。

去年12月,我離開了工作了一年半的舒适區工作區,開啟了自己新的職業道路。一轉眼,在新公司也快工作了小半年時間了,是時候該總結一下了!

在新公司中,我終于開啟了新的職業路線,結束了多年的iOS APP開發馬拉松,開始着手移動端SDK開發的工作。由于之前簡單做過Android APP開發,是以上手并不困難,兩周時間我就可以幾乎完全接手公司中最大的SDK項目。但是能接手隻是一切的最初開始,并不代表不能毫無壓力的勝任這份工作。

之前做iOS APP開發,我隻需要考慮如何優雅的實作功能,重心全部放在功能實作上,其他的基本都不需要關心,而且身為iOS開發,在公司是一種比較少的開發“兵種”,基本上自己寫自己看,很少有人會review我的代碼,很少會在乎結構上和性能上的問題。現在,我需要關注的點幾乎完全變了,雖然功能仍然很重要,但它絕對不是全部了,單單把功能的實作了連及格都算不上,我需要考慮更多之前很少考慮的事情,讓我的工作實質完全改變了。下面我列舉一下目前工作中我需要重點關注的幾個方面:

一、代碼結構

現在工作中,代碼結構非常重要,因為SDK的邏輯非常的複雜,如果結構不夠清晰,添加新需求的時候很容易影響到之前功能的正确性。功能子產品的耦合性要盡可能的少,非不得已情況下千萬不要由一個邏輯去影響另一個邏輯的結果,即使兩個邏輯有關聯也要做出中間的橋梁,保證各做各的事,互相不影響,這一點非常重要!其次,盡可能減少中間變量和開關的使用,使用大量的中間變量的萬體展現在維護上,可能中間變量誕生時機的值是正确的,但是重點維護環節隻要有一個部分出現問題,就會整段垮掉,後果非常嚴重。開關的使用會導緻代碼的結構異常的混亂,分支更是多的離奇,并且同樣會出現維護上的問題,是以能不用盡量不要用,非不得已要用的時候,務必要保證一個開關隻控制一個邏輯,這點很重要!

二、取名字

取名字——聽起來感覺很簡單的事情,實際上是一件需要花費大量心思去完成的事情。名字取的好與壞直接影響SDK的産品品質和Dev的正确使用,是一件非常重要的事情,經常幾個人一起開會隻為了取出一個準确并便于了解的參數名或接口名。好的參數名或接口名可以讓Dev一眼就能了解它們所代表的意思,快速上手使用,減少查閱文檔的時間。

三、各種圖的繪制

在新工作中,我繪制了各種各樣的圖,為了自己了解和分享代碼思路。在此過程中,重新整理思路,找到思維上的漏洞。也可以更加簡潔地實作需求目标,同時減少備援邏輯,做到代碼簡潔,邏輯清晰!同時,留下當時的代碼邏輯思路文檔便于今後工作中review當時的思路,很容易找出曾經邏輯的錯誤點,便于後續糾正!

四、性能的提升

之前做APP開發需要關注的隻是APP性能的提升,一般都隻是在完成功能開發後,會關注性能問題,很少去主動關注APP性能問題,去思考如何提高性能。現在完全不同了,因為SDK的開發面向的使用群體都是Dev,這就要把性能問題放在一個很重要的地位,因為SDK的內建影響APP性能,這點是肯定不允許的。是以,在SDK開發中,每項功能子產品我都需要考慮性能問題的提升。關于性能的提升我總結了一下幾點:

(1)減少不必要的IO操作

(2)減少網絡請求次數,防止請求重入

(3)減少需要等待的邏輯

(4)減少不必要的資料庫操作

離開了隻做iOS APP的舒适區,在新工作中,我漸漸地發現,自己目前的水準離一個合格的移動端架構還有很長的路要走,深刻體會到自己有很多不足的地方,需要重點學習提升自己:

1、目前自己的技術水準和思考方式還是隻限于iOS/Android應用的開發,要脫離這個思維圈,強迫自己往更加廣闊的領域發展

2、自己缺少架構思維,仍然會潛意識地已完成功能為目的地思考問題

3、目前自己對設計模式的認知還很欠缺,需要不多積累學習相關知識

4、目前自己還隻是停留在 iOS/Android兩端語言的使用層面,應該更加深入的了解兩端的語言特性。

目前雖然工作會比較辛苦,但是每一天都有新的收獲,在完成工作的同時不斷提高自己又何嘗不是一件很開心的事,這就是我們平常所說的“痛并快樂着”吧?