您的位置:首頁>科技>正文

如何快速高效地完成一個Android項目?

本文的內容有別于之前文章中純技術的探討, 會從業務邏輯、技術、團隊和方法論的角度探討如何快速高效地完成一個Android項目。 當然, 快速高效是有前提的, 第一, 本文依然是從研發的角度來談如何把控項目的, 而這種研發人正如陳皓在《技術人員的發展之路》中提到的, 需要具備高效的學習能力和解決問題的能力。 另外, 快速需要保證品質, 沒有品質的速度是不負責任的。

一、業務邏輯

電腦科學的核心是通過資料結構和演算法實現對現實世界的抽象, 平臺是會隨著技術發展不斷變遷的, 只有資料本身所描述的這種抽象才是事物永恆的本質。

作為研發, 筆者推薦通過資料結構來理解業務邏輯, 比如, 資料庫建模需要對系統中所有的實體關係進行抽象, 是理解業務邏輯的核心。 當然, 可能有不少App研發人對後臺的業務邏輯並不太關心, 但實話講, 任何依賴於平臺(Windows、Symbian、Android、iOS……)的開發者是沒有安全感的, 平臺是會不斷反覆運算的, 研發人需要去抓住那些本質的、穩定的電腦科學的核心知識。 有點跑題, 舉個栗子, 一個進銷存管理的Android軟體, 先拋開複雜的、精細的管理流程不講, 從最小可行產品(MVP)來說, 主要會包括如下業務:

進貨=選商品+加庫存;

銷售=選商品+減庫存;

庫存=查庫存+庫存修改(商品修改);

基礎資料=新增/修改店鋪+新增/修改商品;

報表=入出操作流水。

對於一個店鋪來講, 進貨需要選品和增加庫存量, 選品的方式可能包括掃描69碼或從庫存添加(69碼最終也會對應庫存中的SKU);銷售包含選品和減少庫存量;庫存包含增刪改查等基本操作;基礎資料包含店鋪資訊、人員資訊、設備資訊等;基礎報表包含利潤、進貨明細、銷售明細、對賬等操作流水。 當然, 上述業務框架僅僅是MVP, 並未考慮ERP、WMS中精細化管理的各種場景, 但對於App的研發來講, 這也是最基礎需要瞭解的。

二、技術

本節將從Android開發的角度來說明在快速開發中最常用、最重要的幾點技術:

資料結構和演算法。 正如業務邏輯中講到的, 資料結構和演算法是軟體技術的核心, 在快速Android開發過程中, 需要瞭解Java中的各種資料類型的實現及原理。

比如下列問題是否了然於胸?

1、List、Queue、Stack的實現有哪些異同?ArrayList如何實現擴容?PriorityQueue、LinkedBlockQueue的主要特性是什麼?直接在迴圈中刪除List的元素為什麼會報ConcurrentModificationException?

2、如何實現樹的深度遍歷、廣度遍歷?檔案系統如何使用二叉樹建模?紅黑樹有什麼特性, 主要的應用場景是什麼?

3、Hash原理是什麼?HashMap的Key有什麼注意事項?Java中是如何解決Hash衝突的, 有哪些解決Hash衝突的辦法?基於Hash衝突的攻擊是什麼原理?為什麼要重寫hashcode和equals方法?LinkedHashMap、TreeMap以及SortMap有什麼異同, 各自的應用場景是什麼?Map如何通過反覆運算器進行遍歷?

4、如何對Collections中的元素進行排序?Compareable和Comparator有什麼區別?如何實現執行緒安全的集合類?常見的併發場景有哪些?閉鎖、FutureTask、信號量、柵欄等各自的應用場景是什麼,

實現原理?如何將串列任務並行化?鎖的實現原理是什麼?

Android中的View、WMS及AMS的知識。 如果是資料是應用的靈魂, 那麼View、WMS及AMS就是應用的外觀。 因此, 應用要求良好的交互性、體驗等, 就需要深入理解View的原理及WMS的知識。 比如下列常見的問題是否理解?

1、RecyclerView的使用, 是否瞭解其與ListView的區別?RecyclerView嵌套與適配器?如何回應Item中控制項的操作?如何在RecyclerView與Activity之間通信, 並實現資料聯動?RecyclerView在ScrollView中的顯示需要注意什麼問題?

2、自訂View需要重寫哪些方法?invalidate和postInvalidate 的區別及使用?如何實現具有動畫效果的View?View的層次關係是什麼?Android中的事件類型有哪些?事件的傳遞過程?ViewGroup和View在事件處理方面有什麼異同?

3、Activity介面的層次?Window、WindowManager以及WindowManagerService之間的關係?如何通信?

4、Activity的啟動過程如何?主執行緒訊息佇列如何啟動?ActivityThread與AMS如何通信?Activity在異常情況下的生命週期?如何在Service中實現對Activity的跨進程回檔?

需要說明的, 這裡提到的技術點並不是像面試中問到的, 因為面試時需要探探應試者的深度, 這裡主要是說明快速開發中直接使用的技術, 也是最需要掌握的基礎知識。 筆者最近準備寫個系列文章, 從八個方面來說明對Android開發的理解, 主要包括:資料結構與演算法、網路通信程式設計、執行緒與併發、進程的通信與調度、View體系及WMS、四大元件及AMS、設計模式與架構、性能優化與虛擬機器, 敬請期待~~

三、團隊

在需要快速高效完成專案的場景下, 團隊的溝通、協作是非常重要的。 如何帶領一個Android開發團隊, 這裡列出幾個筆者認為比較重要的點:

研發團隊不能管理的太緊, 關鍵是要制定好標準,搭好框架,然後在遵循統一的標準下保持進度。研發要避免過度管理,自由、開放的環境更有利於產品研發工作,流程、制度約束太多對創新無益。團隊成員更多的是協作,而不是管理。

技術團隊Leader的工作包括:搭建穩定、可靠的開發框架,模組化、外掛程式化架構,網路通信請求回檔方法,單元測試流程,技術調研,管道包管理,產品、UI和測試團隊的溝通協作,需求討論及工期安排,各種核心流程圖及文檔,Code Review,崩潰日誌分析及處理等等

團隊是有人構成的,團隊中需要有各種不同類型的人,有擔當、能救火的人;有遠見、能防火的人;有執行力、靠譜的人;有喜感、能活躍氛圍的人;有獨立思考、事事能提出不同意見的人……以上總總,只要是能給團隊帶來正面影響的人,作為團隊Leader,一定要以開放、妥協、灰度的眼光求同存異。

四、方法論

從個人的角度來講,如何在高度壓力之下完成大量的工作?不管在公司承擔重要項目,還是自己創業,這都是不可避免的話題。以下談談筆者個人的體會和方法:

節奏。工作的時候要全身心投入,避免各種打擾,比如測試提的BUG,各種會議,要儘量保證工作的連續性,避免被打擾。完成了一周緊張的工作,要及時的休息,腦袋裡完全拋開工作上的事情,做一些其他輕鬆的事情,比如筆者喜歡寫寫毛筆字、喝點小酒,總之,做一些與工作完全無關的事情。

計畫。凡事遇則立,不預則廢,一定要有計劃,要有明確的條理,知道今天該完成什麼,明天該完成什麼,進度該怎麼把控,有什麼風險點,所有的事情一定要提前定好計畫,沒有準備的仗是一定打不贏的。有了計畫之後,才會工作的走向有所把控,心裡才有底,面對領導、同事以及相關工作人的時候,才會有底氣,也才會有自信心。

最後,和大家分享一個經歷和體會,與本文標題沒有直接關係,沒興趣的話可以直接跳過。

上上週末完成了一次從北京的東南到西北的徒步穿越,全程接近40公里。徒步是最簡單的一種思考方式,用腳步這種最原始的方式去經歷每一處風景。

在你到達目標的過程中,不可能一條平坦開闊的大路走到底,還要去走很多沒人走過的小路。大路走的人多,你覺得很有安全感;小路人跡罕至,你很擔心自己走錯。但如果你的目標是終點,你就勇敢的走下去吧。其實路沒有大小,只有你是否能通過此路到達目標。

如果你一開始就決定要走一條很長的路,那麼一開始的走左邊,還是右邊其實影響不大,到達目標的路徑有千萬種選擇。對於一個長跑選手來說,重要的是方向和節奏。只要大方向對,以**為起點,只要朝著西北方向,保持每小時3-5公里的節奏,目標終能到達。

人走在路上,到了中點的時候,可能腳下已經起了水泡,每走一步都很疼。這正如人到中年,工作、職場、家人、身體已經已經落下很多的問題,要去解決這些問題,就會很疼。往回走,就是失敗;站在原地,就會彷徨;所以只能往前走,遇到困難,死活頂上去,保持進步的節奏,你才可能朝目標前進。很多人到了中年之後開始向各種問題妥協,其實就相當於站在原地,彷徨。

以上。

作者:yhthu

來源:簡書

關鍵是要制定好標準,搭好框架,然後在遵循統一的標準下保持進度。研發要避免過度管理,自由、開放的環境更有利於產品研發工作,流程、制度約束太多對創新無益。團隊成員更多的是協作,而不是管理。

技術團隊Leader的工作包括:搭建穩定、可靠的開發框架,模組化、外掛程式化架構,網路通信請求回檔方法,單元測試流程,技術調研,管道包管理,產品、UI和測試團隊的溝通協作,需求討論及工期安排,各種核心流程圖及文檔,Code Review,崩潰日誌分析及處理等等

團隊是有人構成的,團隊中需要有各種不同類型的人,有擔當、能救火的人;有遠見、能防火的人;有執行力、靠譜的人;有喜感、能活躍氛圍的人;有獨立思考、事事能提出不同意見的人……以上總總,只要是能給團隊帶來正面影響的人,作為團隊Leader,一定要以開放、妥協、灰度的眼光求同存異。

四、方法論

從個人的角度來講,如何在高度壓力之下完成大量的工作?不管在公司承擔重要項目,還是自己創業,這都是不可避免的話題。以下談談筆者個人的體會和方法:

節奏。工作的時候要全身心投入,避免各種打擾,比如測試提的BUG,各種會議,要儘量保證工作的連續性,避免被打擾。完成了一周緊張的工作,要及時的休息,腦袋裡完全拋開工作上的事情,做一些其他輕鬆的事情,比如筆者喜歡寫寫毛筆字、喝點小酒,總之,做一些與工作完全無關的事情。

計畫。凡事遇則立,不預則廢,一定要有計劃,要有明確的條理,知道今天該完成什麼,明天該完成什麼,進度該怎麼把控,有什麼風險點,所有的事情一定要提前定好計畫,沒有準備的仗是一定打不贏的。有了計畫之後,才會工作的走向有所把控,心裡才有底,面對領導、同事以及相關工作人的時候,才會有底氣,也才會有自信心。

最後,和大家分享一個經歷和體會,與本文標題沒有直接關係,沒興趣的話可以直接跳過。

上上週末完成了一次從北京的東南到西北的徒步穿越,全程接近40公里。徒步是最簡單的一種思考方式,用腳步這種最原始的方式去經歷每一處風景。

在你到達目標的過程中,不可能一條平坦開闊的大路走到底,還要去走很多沒人走過的小路。大路走的人多,你覺得很有安全感;小路人跡罕至,你很擔心自己走錯。但如果你的目標是終點,你就勇敢的走下去吧。其實路沒有大小,只有你是否能通過此路到達目標。

如果你一開始就決定要走一條很長的路,那麼一開始的走左邊,還是右邊其實影響不大,到達目標的路徑有千萬種選擇。對於一個長跑選手來說,重要的是方向和節奏。只要大方向對,以**為起點,只要朝著西北方向,保持每小時3-5公里的節奏,目標終能到達。

人走在路上,到了中點的時候,可能腳下已經起了水泡,每走一步都很疼。這正如人到中年,工作、職場、家人、身體已經已經落下很多的問題,要去解決這些問題,就會很疼。往回走,就是失敗;站在原地,就會彷徨;所以只能往前走,遇到困難,死活頂上去,保持進步的節奏,你才可能朝目標前進。很多人到了中年之後開始向各種問題妥協,其實就相當於站在原地,彷徨。

以上。

作者:yhthu

來源:簡書

Next Article
喜欢就按个赞吧!!!
点击关闭提示