如何更好地開發一個Android應用

發表於2016-03-24

面向開發者,開發主管,總監,CEO等。
經驗之談,比較雜亂,僅供參考。

專案定義

不同型別的專案當以不同的處理方式。

1. 專案型

該型別專案,重點在於完成專案,取決於客戶需求,或難或易,開發者能做的就是深入挖掘需求,細化工作量,以表明服務態度,避免返工。

2. 產品型

該型別專案,重點在於開發一個好的產品,逐步實現產品定義的功能,除此之外,還需要不斷的優化架構,重構程式碼,提高產品質量,把好的產品輻射到好的測試,好的架構,好的實現,好的效能等等。

下文將將基於產品型專案展開。

迭代開發

相對於大階段佈局,小步伐的迭代式開發更具靈活性,更能應付專案的變化因素。

1. 每日會議

通過每日會議的形式,回顧和分析昨天遺留問題,安排今天的計劃,有效把握開發節奏,防止懶惰情緒的滋生。

2. 定義大版本和小版本

把核心重要的大更新,定義為大版本。把不核心或者輔助的更新,定義未小版本。
開發大版本的時候,捨棄一些不是必需的更新,放到後面的小版本上。
開發小版本的時候,完善之前大版本沒完成的,同時優化程式碼,甚至新增一些小改動,增加一些小功能。

技術能力

除了上述巨集觀的把控,提高自身能力也格外重要。

1. 更好的解決方案

一定要以自己的實際經驗來總結和評估解決方案,並通過比較選擇一個更好的解決方案。
不能人云亦云,也不能滿足於自己現有的成果,求真務實才能更進一步。
這裡列舉幾個方面我所瞭解的解決方案:

1.1. 基本

  • 搭架子 – 1. 目前以多Tab + Fragment為主,已成型; 2. 專案結構
  • 非同步載入圖片 – UIL,Glide
  • 網路請求 – robospice + google http client
  • Json – jackson2
  • 快取機制 – robospice
  • 自動更新 – lesscode
  • 事件通訊 – event bus, otto
  • 資料庫 – litepal
  • 記憶體檢測 – leakcanary
  • 其他各種UI和功能類庫

 

1.2. 服務

  • 統計服務 – 友盟、百度
  • 雲端儲存服務 – 七牛
  • 推送服務 – 極光,個推,小米
  • 支付服務 – 支付寶、微信、銀聯、連連支付、現在支付、充話費、語音支付等
  • 分享 – share sdk
  • 第三方登入 – 各大開放平臺sdk

1.3. 工程

  • 多渠道打包 – gradle flavor
  • 持續整合 – jenkins
  • APK瘦身 – Proguard, AndResGuard, webp等

2. 持續優化的重要性

把一個專案做到可以滿足需求的基本執行,對於開發者開說,說明你成功了,但是隻是第一階段的成功:實現。
接下來你要面臨的問題,很有可能會是一大波新的變化需求,程式碼混亂,效能低下,錯誤異常率下不來等等,這就需要:優化,並且是持續的優化。
持續的優化,不僅能解決很多問題,而且能保證程式碼有效健壯的發展,這對開發者來說,尤為重要,誰都喜歡寫更好的程式碼,都不喜歡改那些亂到掉渣的程式碼。
做專案評估的時候,考慮一下基本優化的工作量;迭代版本的時候,留一定的持續優化的工作量。

3. 困難挫折警示

經常碰到困難,經常被技術問題卡住,經常粗心大意 … …
說明什麼?
要麼太沒經驗,要麼能力不足。
我們可以從多個方面著手擴充技術視野、提高動手能力、優化放錯機制等等:

  1. 關注社群動向
    官方資訊,github, 技術部落格(國內外),視訊(慕課網、極客學院等)… …
  2. 勤於實踐
    把別人的一些好的經驗或者效果,動手實現,轉化為自己的經驗,甚至進一步昇華成更好的成果。
  3. 多參與專案
    珍惜參加專案的機會,多參與,用行動改進,不做旁觀者。
  4. 善假於物
    多學習一些工具git,linux,python,tcpdump等等,用的比較多的,最好能吃透一點(比如git),小工具,大用處。
  5. 細節決定成敗
    成也細節,敗也細節。會區分同類的不同點,能從小的地方改進,遇到困難沉著應付一個一個的攻克細節…

小結

兩個字:落實!

相關文章