精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

騰訊架構師教你如何寫出Android規范文檔

移動開發 Android
一份合格的代碼不應只滿足于實現功能, 更應該遵循良好的規范. 遵循良好的代碼規范有利于:提升程序穩定性, 減少代碼隱患, 降低故障率;增強可擴展性, 大幅提高維護效率;統一標準, 提升多人協作效率;方便新人快速上手, 在項目組人員發生變動時保證項目進度。

前言

一份合格的代碼不應只滿足于實現功能, 更應該遵循良好的規范. 遵循良好的代碼規范有利于:

  • 提升程序穩定性, 減少代碼隱患, 降低故障率;
  • 增強可擴展性, 大幅提高維護效率;
  • 統一標準, 提升多人協作效率;
  • 方便新人快速上手, 在項目組人員發生變動時保證項目進度。

這里梳理一下Android開發過程中需要注意的一些地方, 包括多個部分, 另外根據約束力強弱分為兩類:

  • 強制: 如果不遵守會導致代碼嚴重混亂, 后期維護復雜, 甚至會出現嚴重bug;
  • 推薦: 如果不遵守可能會導致代碼描述不清, 理解困難, 導致功能越多維護越難的問題。

騰訊架構師教你如何寫出Android規范文檔

下面是規范正文

系統設計

強制:

  • 不允許出現兩段相同的邏輯塊, 必須抽出為公共方法, 差異性使用參數控制, 避免修改時多處修改導致遺漏;
  • 不允許出現兩段相同的處于同一邏輯組的復雜布局, 必須抽為單獨的include/merge;
  • 不允許父類中出現子類具體方法, 如果需要的話可以父類定義抽象方法, 交由子類實現;
  • 不允許Activity內多Fragment之間的直接溝通, 必須通過Activity中轉。

推薦:

  • 推薦使用MVP或者MVVM架構;
  • 推薦使用Kotlin語言;
  • 采用模塊分類方式替代文件類別方式, 方便快速查找模塊相關內容, 例: LoginActivity/LoginPreenter/LoginHttpRequest/LoginBean/LoginAdapter等所屬同一登錄模塊的文件放入一個文件夾, 而不是所有activity放入一個文件夾, 所有adapter放入一個文件夾。

命名方式

強制:

  • 不允許出現中文命名方式;
  • java/kotlin文件使用大駝峰方式, 例: LoginActivity.kt, NewsAdapter.kt, NewsBean.java;
  • layout/drawable/anim/style等resource文件使用小寫+下劃線的方式, 例: login_activity.xml, login_logo.png;
  • 類定義使用大駝峰方式, 例: class LoginPresenter {}, class NewsBean {};
  • 對象使用小駝峰方式, 例: LoginPresenter loginPresenter, NewsBean newsBean;
  • 靜態常量使用全大寫+下劃線的方式, 例: public static final boolean IS_RELESAE = true;
  • Kotlin使用的布局中的控件id必須使用小駝峰方式, 例: android:id="@+id/tvLogin"。

推薦:

  • 文件/資源命名時采用 模塊+類型 的方式, 以便迅速查找相關內容, 例如登錄頁面: LoginActivity.kt, login_activity.xml, login_logo.png, 網絡錯誤, #f3f3f3
  • java使用的布局中的id名建議使用小駝峰方式, 并且使用控件類型縮寫開頭, 例: android:id="@+id/tvLogin", 附錄常用控件縮寫:

騰訊架構師教你如何寫出Android規范文檔

可見性

強制:

  • 所有新定義的類/方法, 默認寫成private, 只有在其他類需要引用時再看情況標為public, protected, package-private;

推薦:

  • java定義的父類中定義的方法如果子類重寫會導致問題時, 添加final關鍵字;

注釋相關

類/復雜或者不能從方法名字看出意圖的方法必須添加注釋, 當類/方法添加注釋時, 必須使用此類型注釋:

  1. /** 
  2. * Created by XXX on 2019/6/19. 
  3. * 描述此類作用, 邏輯復雜的說明一下主要思路 
  4. */ 
  5. public class LoginPresenter { 
  6. /** 
  7. * 用于進行網絡請求 
  8. * @params xxx XXX 
  9. */ 
  10. public void doLoginRequest(...){} 

變量注釋不允許使用與類/方法一致的注釋形式;

方法注釋中不允許出現@params, @return的參數描述錯誤的情況, 必須實時更新;

推薦:

  • 一段邏輯建議使用/* */的方式;
  • 方法/參數建議添加 @Nullable, @NotNull, @UiThread 等注解;

代碼風格

  • 此git目錄下同時存有 AndroidCodeStyleSetting.jar 配置文件, 用于AndroidStudio導入后按照統一風格進行代碼的格式化.
  • 如果沒有編寫代碼時隨時格式化代碼的習慣, 可以在AndroidStudio版本控制提交窗口右側Before Commit中勾選Reformat code選項.

Android基本組件

強制:

  • Intent通信時不允許傳遞超過1M的數據, 可以采用外部Presenter中轉或者EventBus傳遞的方式;
  • Intent隱式啟動時必須檢查目標是否存在, 否則會出現目標未找到崩潰: if (getPackageManager().resolveActivity(intent, PackageManager.MATCH_DEFAULT_ ONLY) != null);
  • Activity/Service/BroadcastReceiver內如果有耗時操作, 必須采用多線程進行處理;
  • 應用內部發送廣播時, 只能使用LocalBroadcastManager.getInstance(this).sendBroadcast(intent), 不允許 context.sendBroadcast(intent), 避免外部應用攔截;
  • 不允許在Application中緩存數據, 全局的共享數據可以使用某presenter存儲, 或者使用SharedPreference讀寫;
  • Activity或者Fragment中動態注冊BroadCastReceiver時,registerReceiver和unregisterReceiver必須要成對出現;

推薦:

  • Activity#onPause/onStop中結合isFinishing的判斷來執行資源的釋放, 必免放在執行時機較晚的Activity#onDestroy()中執行;
  • 不要在Activity#onPause中執行耗時操作, 這樣會導致界面跳轉卡頓, 可以放入Activity#onStop中執行;

UI/布局

強制:

  • 布局xml優先使用ConstraintLayout, 可以保證無嵌套的情況下完成包括部分控件同時顯隱需求在內的99%的布局要求;
  • 不允許使用ScrollView包裹ListView/GridView/ExpandableListVIew等列表View, 復雜多項式列表可以使用多ItemType進行處理;

推薦:

  • 在Activity中顯示對話框或彈出浮層時, 盡量使用DialogFragment, 而非Dialog/AlertDialog, 便于隨Activity生命周期管理彈窗的生命周期;

進程/線程/消息推送

強制:

  • 存在多進程的情況時, Application中的初始化代碼要根據進程分別處理, 避免初始化不必要的業務;
  • 新建線程時, 必須通過線程池的方式, 不允許采用new Thread()的方式;
  • Activity/Fragment中使用Handler時, 必須使用靜態內部類+WeakReferences方式或者在onStop中調用handler.removeCallbacksAndMessages;

推薦:

  • 多進程間共享數據使用ContentProvider替代SharedPreferences#MODE_MULTI_PROCESS;

文件/數據庫

強制:

  • 使用系統API獲取文件路徑, 避免手拼字符串, 例: android.os.Environment#getExternalStorageDirectory(), Context#getFilesDir(), 錯誤示例: File file = new File("/mnt/sdcard/Download/Album", name);
  • 當使用外部存儲時, 必須檢查外部存儲的可用性: Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState());
  • 數據庫Cursor使用之后必須關閉, 以免內存泄漏;

推薦:

SharedPreference僅存儲簡單數據類型, 不要存儲復雜數據, 如json數據/Bitmap編碼等;

SharedPreference提交數據時, 盡量使用Editor#apply(), 而非Editor#commit();

圖片/動畫

強制:

  • 加載大圖時必須在子線程中處理, 否則會卡UI;
  • 在Activity.onPause()/onStop()中關閉當前activity正在執行的動畫;

推薦:

  • Android圖片建議轉化為WebP格式, 可以減少APK體積;
  • 動畫盡量不要使用AnimationDrawable, 占用非常多內存;
  • 使用ARGB_565代替ARGB_888, 減少內存占用;
  • 當Animation執行結束時, 調用View.clearAnimation()釋放相關資源;

安全性

強制:

  1. 上線包必須混淆;
  2. 加解密的秘鑰/鹽不允許硬編碼到代碼中, 以防反編譯獲取;
  3. Https處理時必須校驗證書, 不允許直接接受任意證書;
  4. 使用Android的AES/DES/DESede加密算法時, 不要使用默認的加密模式ECB, 應顯示指定使用CBC/CFB加密模式;
  5. 禁止把敏感信息打印到log中;
  6. 在應用發布時必須確保android:debuggable為false;
  7. 必須利用X509TrustManager子類中的checkServerTrusted函數效驗服務器端證書的合法性,
  8. 必須將android:allowbackup屬性設置為false, 防止adb backup導出應用數據。 

 

責任編輯:未麗燕 來源: 安卓巴士
相關推薦

2011-11-01 10:12:09

Web

2012-08-28 13:34:28

架構師軟件架構架構文檔

2020-07-15 08:17:16

代碼

2020-10-26 09:02:45

如何校驗參數

2020-08-04 09:11:47

架構師垃圾代碼

2020-05-11 15:23:58

CQRS代碼命令

2017-03-15 13:41:16

數據庫SQL調試

2016-11-25 13:50:15

React組件SFC

2021-09-01 08:55:20

JavaScript代碼開發

2013-06-07 14:00:23

代碼維護

2021-11-30 10:20:24

JavaScript代碼前端

2019-02-22 10:00:45

Java開發代碼

2019-07-31 07:36:12

架構運維技術

2022-02-17 10:05:21

CSS代碼前端

2022-02-08 19:33:13

技巧代碼格式

2021-01-04 07:57:07

C++工具代碼

2019-09-20 15:47:24

代碼JavaScript副作用

2020-05-19 15:00:26

Bug代碼語言
點贊
收藏

51CTO技術棧公眾號

欧美性猛片aaaaaaa做受| 蜜桃一区二区三区四区| 日韩欧美国产综合在线一区二区三区| av动漫在线免费观看| 天天摸天天干天天操| 久久久国产精品一区二区中文| 中文字幕在线视频日韩| 性感美女一区二区三区| se69色成人网wwwsex| 亚洲精品中文在线影院| 蜜桃精品久久久久久久免费影院| 亚洲手机在线观看| 亚洲福利国产| 色偷偷av亚洲男人的天堂| 色欲欲www成人网站| 亚洲天堂av影院| 亚洲欧美日韩国产成人精品影院 | 国产69精品久久777的优势| 欧美亚洲国产成人精品| 亚洲欧美精品aaaaaa片| 亚洲专区视频| 日韩精品一区二区三区四区视频| 能在线观看的av网站| 欧美女同一区| 里番在线播放| 欧美另类视频| 中文字幕亚洲欧美日韩高清 | 99久久精品国产精品久久| 国产精品亚洲网站| 日韩av大片在线观看| 欧美不卡高清| www日韩欧美| 熟女少妇内射日韩亚洲| 精品欧美午夜寂寞影院| 这里只有精品电影| 88av.com| 成人美女大片| 精品久久久久久亚洲精品| 小说区视频区图片区| 成人高清免费在线播放| 91麻豆精品视频| 国产精品久久久久久久久久久久冷| 在线视频1卡二卡三卡| 模特精品在线| 97超级碰碰人国产在线观看| 妺妺窝人体色www在线下载| 日韩精品免费| 日韩中文字幕网| 成人免费视频入口| blacked蜜桃精品一区| 亚洲精品自拍视频| 欧类av怡春院| 欧美日韩一区二区三区四区不卡| 欧美草草影院在线视频| 久久久九九九热| 人人爱人人干婷婷丁香亚洲| 91麻豆精品国产无毒不卡在线观看| 免费看涩涩视频| 99久久精品一区二区成人| 色丁香久综合在线久综合在线观看| 午夜精品久久久内射近拍高清| 中文字幕乱码在线播放| 捆绑调教日本一区二区三区| 国产伦精一区二区三区| 成人免费网站在线看| 97成人在线观看| 国产在线播放一区三区四| 91色精品视频在线| 亚洲国产精彩视频| 99久久精品免费| 久久天堂国产精品| 日本韩国精品一区二区| 久久亚洲综合av| 日韩在线电影一区| 黄色网址在线免费播放| 亚洲一区二区三区影院| 国产黄色片免费在线观看| 涩涩视频在线免费看| 色婷婷综合久久久中文一区二区| 国产理论在线播放| 99精品美女视频在线观看热舞| 91精品国产麻豆| 最新日本中文字幕| 久久不见久久见免费视频7| 中文字幕久久久av一区| 人妻少妇精品一区二区三区| 最新成人av网站| 日韩av电影在线播放| 一级特黄特色的免费大片视频| 国产一区二区不卡老阿姨| 国产乱码一区| 思思99re6国产在线播放| 一区二区三区高清在线| 蜜臀av午夜一区二区三区| 亚洲三级在线| 亚洲精品国产欧美| 懂色av粉嫩av浪潮av| 激情久久婷婷| 国产日韩在线播放| 人妻精品一区一区三区蜜桃91| 国产喂奶挤奶一区二区三区| 男人草女人视频| 成人影院入口| 精品免费国产一区二区三区四区| 久久只有这里有精品| 欧美二区视频| 国产成人亚洲综合91| 国产99对白在线播放| 久久亚区不卡日本| 樱空桃在线播放| 婷婷激情一区| 亚洲国产精品va在线看黑人| 国产探花视频在线| 国产亚洲精品久久久久婷婷瑜伽| 亚洲sss综合天堂久久| 嫩草研究院在线观看| 亚洲综合一区二区三区| 中日韩av在线播放| 蜜桃一区二区三区| 欧美大片在线免费观看| 一区二区视频网| 2欧美一区二区三区在线观看视频| 黄色免费高清视频| 欧美日韩五区| 精品亚洲男同gayvideo网站| 青青操视频在线播放| 老司机精品视频在线| 久久艳妇乳肉豪妇荡乳av| 久色国产在线| 日韩一级高清毛片| 成人欧美一区二区三区黑人一| 久久影院亚洲| 久久伊人一区| 亚洲黄色中文字幕| 精品成人一区二区| 免费人成年激情视频在线观看| 精品一区二区在线视频| 亚洲高清乱码| 外国电影一区二区| 亚洲人成电影网站色xx| 国产精品国产三级国产专区52| 国产不卡高清在线观看视频| 自拍偷拍视频在线| 91精品视频一区二区| 日韩在线视频线视频免费网站| 中文字幕欧美人妻精品| 国产欧美日韩在线视频| 成人免费无码av| 国产亚洲一卡2卡3卡4卡新区| 亚洲另类在线制服丝袜| 欧美激情免费看| 久久精品国产亚洲av麻豆蜜芽| 久久―日本道色综合久久| jizzjizzxxxx| 午夜欧洲一区| 国产精品草莓在线免费观看| yourporn在线观看视频| 91国模大尺度私拍在线视频| 极品人妻videosss人妻| 日本强好片久久久久久aaa| 亚洲第一在线综合在线| 日韩在线激情| 九九久久久久99精品| 成人1区2区3区| 亚洲国产精品尤物yw在线观看| 久久久久亚洲AV成人无码国产| 新狼窝色av性久久久久久| 日本一区视频在线| 欧美a视频在线| 久久综合免费视频| 丰满少妇高潮在线观看| 精品国产乱码久久久久酒店| av黄色免费网站| 久久精品国产在热久久| 永久免费在线看片视频| 成人激情自拍| 国产成人精品亚洲精品| 久操视频在线| 精品女同一区二区| 亚洲欧美另类在线视频| 中日韩av电影| 最新日本中文字幕| 天堂一区二区在线免费观看| 亚洲精品乱码久久久久久蜜桃91 | 免费a级人成a大片在线观看| 日韩一区二区三区在线| 国产综合精品视频| 国产精品二三区| 国产精品久久久久久亚洲av| 日韩精品色哟哟| 成人国产在线看| 免费视频亚洲| 999国产视频| 日韩电影网站| 国产精品一区二区久激情瑜伽| 精品一区二区三区三区| 国产无套丰满白嫩对白| 国产精品国产三级国产三级人妇 | 日本高清不卡在线| 大片免费在线观看| 日韩精品欧美激情| 国产理论片在线观看| 福利微拍一区二区| 黄色录像二级片| 国产亚洲综合在线| 涩视频在线观看| 美女视频黄久久| 伊人成色综合网| 综合久久精品| 亚洲韩国在线| 亚洲黄页网站| 国产精品免费视频一区二区| 香蕉久久一区| 日本一区二区在线播放| 丁香花在线高清完整版视频| 久久精品美女视频网站| 欧美女优在线观看| 精品国产乱码久久久久久牛牛 | 国产一区二区三区四区在线观看| 国产亚洲综合视频| 欧美精品九九| 熟妇熟女乱妇乱女网站| 欧美色爱综合| 欧美日韩综合网| 台湾色综合娱乐中文网| 国产高清一区二区三区| 亚洲伊人伊成久久人综合网| 国产成人精品久久久| 51漫画成人app入口| 久久成人人人人精品欧| 在线观看精品一区二区三区| 亚洲欧美激情精品一区二区| 婷婷在线观看视频| 日韩美女一区二区三区| 99精品免费观看| 3d动漫精品啪啪一区二区竹菊| 中国黄色一级视频| 在线免费av一区| 91午夜精品亚洲一区二区三区| 午夜电影一区二区| 日韩特黄一级片| 精品成人乱色一区二区| 亚洲国产精品午夜在线观看| 亚洲韩国一区二区三区| 精品一区在线视频| 亚洲成人动漫一区| 日韩三级视频在线| 欧美体内谢she精2性欧美| 日韩免费视频一区二区视频在线观看| 天天色天天操综合| 日本三级片在线观看| 亚洲成a人片综合在线| 国产真实夫妇交换视频| 亚洲成a人片在线不卡一二三区 | 羞羞网站在线免费观看| 欧美大尺度激情区在线播放| 婷婷在线播放| 777国产偷窥盗摄精品视频| 一个人看的www视频在线免费观看| 欧美一区二区三区……| 最新日韩三级| 成人免费自拍视频| 狂野欧美xxxx韩国少妇| 国产精品国产三级欧美二区| 果冻天美麻豆一区二区国产| 久久久久综合一区二区三区| 夜夜春成人影院| 亚洲欧美日韩国产yyy| 中文乱码免费一区二区三区下载| 黄色成人在线免费观看| 一本久道久久综合狠狠爱| 精品视频一区二区在线| 久久国产人妖系列| 无码人妻少妇色欲av一区二区| 成人高清免费观看| 色婷婷在线影院| 成人欧美一区二区三区黑人麻豆| 久久久精品视频在线| 精品久久久一区二区| 中文字幕 日韩有码| 日韩欧美一区在线观看| 香蕉视频免费在线看| 色妞欧美日韩在线| 超黄网站在线观看| 国产成人欧美在线观看| 日韩成人久久| 日本精品一区二区三区视频 | 国产中文字幕在线免费观看| 日韩一区精品视频| 最新国产精品自拍| 国产精品网站在线观看| 久草视频在线资源| 欧洲一区在线电影| 国产综合视频在线| 中文字幕欧美国内| av在线最新| 成人午夜在线影院| 亚洲精品亚洲人成在线| 中国老女人av| 久久www成人_看片免费不卡| 久久精品无码一区二区三区毛片 | 亚洲福利在线观看| 在线观看二区| 51ⅴ精品国产91久久久久久| 99视频这里有精品| 日本视频精品一区| 一区二区国产精品| 国产精品19p| 国产精品情趣视频| 亚洲天堂男人av| 亚洲成人性视频| bestiality新另类大全| 国产精品免费观看在线| 久久高清免费视频| 国产欧美日韩一区二区三区在线| 黄色在线视频网| 久久综合九色综合欧美就去吻| 久久久久成人精品无码| 欧美日韩国产另类一区| 九色视频在线观看免费播放| 欧美激情第三页| 久久综合偷偷噜噜噜色| 一区二区91美女张开腿让人桶| 久久av一区| 国产精品无码永久免费不卡| 亚洲国产人成综合网站| 国产美女无遮挡永久免费| 在线观看视频亚洲| 成人亚洲欧美| 欧美精品二区三区四区免费看视频| 午夜精品亚洲| 亚洲18在线看污www麻豆| 国产日韩三级在线| 中文字幕超碰在线| 日韩电影免费观看中文字幕| 国产乱码在线| 99在线观看视频| 亚洲网色网站| 午夜影院免费观看视频| 国产精品成人免费在线| 中文字幕av网站| 在线观看日韩欧美| 欧美成人aaa| 一区精品在线| 国产一区在线观看视频| 国产午夜手机精彩视频| 91精品国产91久久综合桃花 | 久久久久亚洲精品| 中文字幕av一区二区三区四区| 奇米777四色影视在线看| 国产成人精品影院| 国产午夜精品无码| 亚洲国内精品在线| 92国产精品| 日韩在线电影一区| 国内欧美视频一区二区| 欧美日韩三级在线观看| 精品电影一区二区| 欧美男男tv网站在线播放| 欧美日韩精品免费看| 日本美女一区二区三区| 波兰性xxxxx极品hd| 欧美一区二区三区婷婷月色| 欧洲一区二区三区| 精品欧美国产一区二区三区不卡| 久久高清免费观看| 久操视频在线观看免费| 7777精品伊人久久久大香线蕉最新版| 1024在线播放| 久久久久久久久一区| 免费av网站大全久久| 免费中文字幕在线| 日韩av最新在线观看| 巨胸喷奶水www久久久免费动漫| 国产免费色视频| 99热在这里有精品免费| 老熟妇一区二区三区啪啪| 欧美xxxx18性欧美| 偷拍亚洲精品| 911av视频| 欧美日韩国产中文字幕| 98在线视频| 不卡日韩av| 日韩—二三区免费观看av| 日韩激情综合网| 日韩精品在线视频观看| 九七电影院97理论片久久tvb| 日韩中文字幕在线不卡| 久久日韩精品一区二区五区| 国产suv一区二区| 日本不卡免费高清视频| 91精品啪在线观看国产18| 艳妇乳肉亭妇荡乳av| 欧美日韩在线观看一区二区| 免费在线播放电影| 亚洲精品国产一区| 99热这里都是精品| 国产不卡精品视频| 国产精品久久久久7777婷婷| 日韩一级欧洲|