軟多信息技術(shù)-中國互聯(lián)網(wǎng)軟件開發(fā)商!
App開發(fā)怎樣做到又快,又穩(wěn),又清晰呢?相信不單單是App開發(fā)人員想如此。每個(gè)開發(fā)需求這也想外包公司在做App時(shí)能夠又快,又穩(wěn),這樣能剩下很多精力和金錢···
Android開發(fā),能理清業(yè)務(wù)邏輯,不受外界干擾地投入開發(fā),開發(fā)速度會(huì)很迅速,很快,普通規(guī)模的App,一到兩周即可完成。
穩(wěn):Android常見問題有內(nèi)存、異步、響應(yīng)等,排除和解決很容易,難的是怎樣確保不出現(xiàn)這些問題?可以簡單地用時(shí)間量化評(píng)價(jià),要等大量bug出現(xiàn)之后,才知道穩(wěn)不穩(wěn),但一般工作中會(huì)有個(gè)弊端,為了趕工速度一快起來,就很容易出現(xiàn)大量bug。
清晰:清晰是難做到的,快可以通過時(shí)間量化,穩(wěn)可以通過bug統(tǒng)計(jì)量化,但是清晰是很難量化的,代碼審查和可擴(kuò)展性都是主觀評(píng)價(jià),而且相當(dāng)滯后,很多情況下,往往要等到需要實(shí)現(xiàn)擴(kuò)展,甚至換人接手代碼時(shí),才知道代碼不清晰。
當(dāng)然,公司層面也應(yīng)有清楚的定位,研發(fā)對設(shè)計(jì)的投入,必須是有限的指導(dǎo)性的,如果大量把研發(fā)投入到設(shè)計(jì)工作,就是另一種形式的浪費(fèi)了。
在實(shí)際開發(fā)過程中,除bug其實(shí)占了相當(dāng)一部分工作量,有時(shí)候好好的開發(fā)計(jì)劃,因?yàn)閹讉€(gè)詭異的bug就得耽誤半天,所謂“碼字5分鐘,排錯(cuò)兩小時(shí)”是也。所以,能否盡早盡快處理異常,是非常影響開發(fā)效率的。
處理異常,軟多信息有這么幾條心得:
提前考慮異常處理,在寫正常流程的業(yè)務(wù)代碼之前,先考慮異常,“未慮勝,先慮敗”,沿著業(yè)務(wù)流程分支,先把異常情況都處理掉,例如獲取在線數(shù)據(jù)顯示一個(gè)列表,先考慮網(wǎng)絡(luò)異常、服務(wù)器報(bào)錯(cuò)、數(shù)據(jù)失敗等異常情況,并依次給出相應(yīng)提示,最后才處理數(shù)據(jù)正常的情況,你本來就要寫正常業(yè)務(wù)代碼和異常處理代碼,你只需要調(diào)換一下工作的先后順序,其實(shí)你投入的開發(fā)時(shí)間沒有增加,但是你的效率卻大大提升了,因?yàn)橐坏┏霈F(xiàn)異常,我們可以迅速判斷異常原因,節(jié)省大量時(shí)間。
這樣做還有一個(gè)好處,在你的思維陷入復(fù)雜的業(yè)務(wù)邏輯之前,先處理相對簡單的異常分支,可以避免你被業(yè)務(wù)邏輯搞到大腦缺氧后,再回來處理異常分支時(shí)一時(shí)疏忽手滑,寫錯(cuò)或者寫漏異常處理。
隔離前后臺(tái)對接的數(shù)據(jù)接口,最好不要直接使用后臺(tái)提供的數(shù)據(jù),中間加一層映射,一方面,如果后臺(tái)數(shù)據(jù)出了問題(數(shù)據(jù)異常、變更字段等),你在映射數(shù)據(jù)時(shí)就能發(fā)現(xiàn)和定位問題;另一方面,也有利于你采用更適合App的數(shù)據(jù)形式進(jìn)行數(shù)據(jù)持久化。
另外,建議做一個(gè)接口錄入與檢查工具,形式不論,但要能輕松地維護(hù)前后臺(tái)接口,最好能自動(dòng)檢測接口反饋是否正常(服務(wù)器負(fù)載過大、字段變更、第三方服務(wù)過期等)。
異常信息的收集、匯總和數(shù)據(jù)持久化
如果出現(xiàn)異常,最重要的是采集到異常代碼行(如MainActivity第61行)和異常原因(如空指針異常),并記錄為本地文件以備上傳和查看
其實(shí)java的異常處理的內(nèi)容還有很多,感興趣可以看一看我以前總結(jié)過的Java異常捕獲的設(shè)計(jì)原則:
敏捷開發(fā)里有一個(gè)實(shí)踐原則,就是不要過度設(shè)計(jì),開發(fā)的價(jià)值不在于寫出漂亮的代碼,在于實(shí)現(xiàn)產(chǎn)品并支撐其正常運(yùn)轉(zhuǎn),在能實(shí)現(xiàn)產(chǎn)品功能的前提下,代碼邏輯其實(shí)是越簡單越好,簡單往往就意味著高可靠性+低維護(hù)成本,如果將來需要擴(kuò)展功能,可以通過修改和重構(gòu)實(shí)現(xiàn)。
當(dāng)然,簡單并不意味著隨意,要把事件做復(fù)雜很容易,要做簡單卻很難。能做到邏輯清晰、線程安全、內(nèi)存安全,又容易修改和擴(kuò)展的同時(shí),還能保持代碼簡潔,其實(shí)反而更考驗(yàn)功力的。
其實(shí)不僅在開發(fā)新功能時(shí)要避免過度設(shè)計(jì),在維護(hù)和擴(kuò)展舊代碼時(shí),也要注意,能正常運(yùn)行的代碼,都是好代碼,我覺得在維護(hù)舊代碼時(shí),其實(shí)也適用開放封閉原則,對不得不改,不改就崩的舊代碼,是開放的,可以修改的;對能正常運(yùn)行的代碼,哪怕你覺得再難看再手癢,那也是封閉的,是不可以修改的。
回到那句話,開發(fā)的價(jià)值不在于寫出漂亮的代碼,在于實(shí)現(xiàn)產(chǎn)品并支撐其正常運(yùn)轉(zhuǎn)。
軟件開發(fā)項(xiàng)目管理有四個(gè)要素:時(shí)間、成本、范圍、質(zhì)量。四個(gè)要素不能兼得的,要時(shí)間,就得砍一些范圍的項(xiàng)目目標(biāo),降成本,就容易犧牲質(zhì)量等等,不過,建立和維護(hù)通用庫,卻能同時(shí)對四個(gè)要素都有好處:
1、加快開發(fā)速度,專注于具體業(yè)務(wù)(時(shí)間)
2、降低團(tuán)隊(duì)成員熟悉項(xiàng)目的成本,為新業(yè)務(wù)開發(fā)提供基礎(chǔ),加快開發(fā)迭* 代速度,有利于更快地發(fā)布版本
提高代碼復(fù)用率,降低開發(fā)投入(成本)
3、穩(wěn)定的公共模塊采用依賴組件庫方式,提供給各個(gè)業(yè)務(wù)線協(xié)作使用,* 減少重復(fù)開發(fā)和升級(jí)維護(hù)工作量
提升開發(fā)效率,更容易實(shí)現(xiàn)項(xiàng)目目標(biāo)(范圍)
4、對已實(shí)現(xiàn)過的功能/業(yè)務(wù),抽象出通用模塊,再有類似的需求,能夠 迅速實(shí)現(xiàn),更容易實(shí)現(xiàn)項(xiàng)目的業(yè)務(wù)需求
提升產(chǎn)品質(zhì)量,持續(xù)改進(jìn)通用功能(質(zhì)量)
頻繁使用的功能/業(yè)務(wù)模塊采用組件復(fù)用方式,更有利于暴露缺陷, 一處修改,多處受益,提高產(chǎn)品質(zhì)量
其實(shí)說起提高效率,前面的很多經(jīng)驗(yàn)因?yàn)樾枰趯?shí)際開發(fā)中慢慢體會(huì),難以迅速上手,反而是工具模板,真正見效快,一次安裝,終生受益 :)
就我的經(jīng)驗(yàn)而言,對我開發(fā)效率幫助很大,包括代碼模板、常用配置和開發(fā)插件,以及著名的程序員在線交友網(wǎng)站Github。
一般來說,程序員看自己一個(gè)月前寫的代碼,是完全陌生的,我也一樣,基本上過一個(gè)月就沒印象了,但是如果要修改/擴(kuò)展怎么辦,這時(shí)候,就得看代碼注釋了。就個(gè)人經(jīng)驗(yàn)而言,有這么幾個(gè)地方,一定要寫注釋!
服務(wù)、廣播等,服務(wù)和廣播因?yàn)闆]有界面,容易游離在業(yè)務(wù)邏輯鏈條之外,在業(yè)務(wù)邏輯上缺少上下文,就必須有詳盡的注釋,說明其業(yè)務(wù)場景。
初始化、注入等,如果自定義了一些擴(kuò)展的功能或控件,要求執(zhí)行某些初始化函數(shù),或者要注入特定功能的,就必須寫好注釋,提示調(diào)用者進(jìn)行必要的操作。
工作總要排優(yōu)先級(jí)的,有些工作暫時(shí)延后,自己記錄是沒用的,團(tuán)隊(duì)開發(fā)用的還是代碼,所以一定要寫TODO,提示開發(fā)者,這里是未完成的狀態(tài),避免不必要的誤會(huì)和延誤。
以上就是軟多信息針對每一個(gè)軟件開發(fā)項(xiàng)目時(shí),總結(jié)下來的一些經(jīng)驗(yàn),由于篇幅問題有所刪減,如有沒有言說的地方,請諒解!
鄭州市管城區(qū)紫荊山路
興達(dá)國貿(mào)1001室
趙經(jīng)理:13673670267
胡經(jīng)理: 18137129857
周一到周六 8:30 ~ 18:00
為中小企業(yè)提供信息化、電商化、互聯(lián)網(wǎng)化的整體解決
方案,真正做到讓天下門店沒有難做的營銷!
微信小程序
微信公眾號(hào)
抖音賬號(hào)
Copyright ? 2017 軟多信息技術(shù) All rights reserved. 增值電信業(yè)務(wù)經(jīng)營許可證:豫B2-20200556 備案號(hào):豫ICP備18038454號(hào)-4