這個(gè)世界上有兩種人-從經(jīng)驗(yàn)教訓(xùn)中學(xué)習(xí)的人以及聽從別人建議的人枝笨。這里是我一路走來學(xué)到的一些東西袁铐,分享給大家:
- 在添加任何第三方party之前,請(qǐng)三思:這真的是一個(gè)成熟的項(xiàng)目嗎横浑?
- 如果一個(gè)東西用戶看不到剔桨,就不要繪制它!
- 除非真的需要徙融,否則別使用數(shù)據(jù)庫(kù)洒缀;
- 達(dá)到65k方法數(shù)限制來的非常快欺冀,真的树绩,非常快隐轩!不過 multidexing 可以拯救你;
- RxJava 是 AsyncTasks 以及其它雜碎的最佳替代者饺饭;
- Retrofit 可能是現(xiàn)在最佳的網(wǎng)絡(luò)請(qǐng)求庫(kù);
- 使用 Retrolambda來簡(jiǎn)化你的代碼职车;
- 把 RxJava 和 Retrofit 以及 Retrolambda 結(jié)合起來會(huì)讓你酷炸天瘫俊!
- 我使用 EventBus 而且它也很好,但是我并不會(huì)用太多悴灵,因?yàn)檫@樣代碼庫(kù)會(huì)變得凌亂扛芽;
- 包名按照功能來,而不是按分層來;
- 把所有東西都移到 application thread之外积瞒;
- lint 可以幫助你優(yōu)化布局與布局樹川尖,這樣你就能識(shí)別出那些可能已經(jīng)被移除的冗余的View;
- 如果你在使用gradle茫孔,使用一切可能的方式去加速它叮喳;
- 對(duì)builds做profile reports,以便知道什么占據(jù)了編譯時(shí)間银酬;
- 使用一個(gè) 有名的 架構(gòu)嘲更;
- 測(cè)試時(shí)比較花時(shí)間,但是一旦你找到訣竅它可以比不使用測(cè)試更快揩瞪、更健壯;
- 使用 依賴注入 讓你的app更模塊化,從而更易于測(cè)試篓冲;
- 收聽 fragmented podcast 將會(huì)讓你受益李破;
- 千萬別用私人郵箱作為你安卓市場(chǎng)的發(fā)布者賬號(hào);
- 總是使用恰當(dāng)?shù)妮斎腩愋停?/li>
- Use analytics to find usage patterns and isolate bugs;
- 關(guān)注最新的 libraries(使用dryrun 來快速查看它們的的效果);
- 你的service應(yīng)該做你所需的事情壹将,并且盡快死去嗤攻;
- 使用 Account Manager 來提示登錄用戶名和郵箱地址;
- 使用CI(持續(xù)集成)來構(gòu)建和發(fā)布你的beta和產(chǎn)品apk诽俯;
- 不要運(yùn)行自己的CI server妇菱,維護(hù)server是費(fèi)時(shí)的事情,因?yàn)榇疟P空間,安全問題闯团,更新server以防止SSL攻擊等等原因辛臊。
- 使用circleci, travis 或者 shippable, 它們便宜,而且你也可以少擔(dān)心一些事情房交;
Automate your deployments to the playstore; - 如果一個(gè)library很大而你只需要使用其中的一部分功能彻舰,你應(yīng)該尋找一個(gè)更小的來替代(比如依靠proguard );
- 不要使用多于實(shí)際需要的module候味。從零開始編譯一個(gè)module或者僅僅是檢查上個(gè)module是否最新所需要的時(shí)間幾乎是加載 binary .jar/.aar依賴的4倍以上刃唤;
- 開始考慮用SVG來替代PNG ;
- Make library abstraction classes, it’ll be way easier to switch to a new library if you only need to switch in one place (e.g.AppLogger.d(“message”) can contain Log.d(TAG, message) and later realise that Timber.d(message) is a better option);
- 監(jiān)控你的連接情況以及連接類型(wifi之下更新更多數(shù)據(jù)白群?)尚胞;
- 監(jiān)控你的電源和電量(在充電的時(shí)候更新更多的數(shù)據(jù)?電量低的時(shí)候暫停更新帜慢?)辐真;
- 一個(gè)用戶界面就如一個(gè)笑話那樣,如果你需要解釋崖堤,那么證明它并不夠好侍咱;
- Tests are great for performance: Write slow (but correct) implementation then verify optimizations don’t break anything with tests.