精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

国产精品1区二区.| 大陆精大陆国产国语精品| 国产精品美女久久久久aⅴ国产馆| 国产欧美精品一区二区三区-老狼| 成人涩涩视频| 欧美日韩精品一区二区三区在线观看| 天天综合网 天天综合色| 欧美日韩喷水| 午夜精品久久久久久久96蜜桃 | 丝袜美腿亚洲一区| 久久久精品免费| 欧美无人区码suv| 国产精品亚洲综合在线观看| 精品久久香蕉国产线看观看亚洲| 亚洲欧美成人一区| 色一情一乱一区二区三区| 日韩在线卡一卡二| 色综合久综合久久综合久鬼88| b站大片免费直播| 在线视频亚洲欧美中文| 欧美中文字幕一区二区三区| 久久亚洲精品无码va白人极品| 超碰免费97在线观看| 国产91对白在线观看九色| 日本精品免费一区二区三区| 久草网视频在线观看| 日韩在线观看电影完整版高清免费悬疑悬疑 | 国产精品国产对白熟妇| h网站视频在线观看| 9i在线看片成人免费| 亚洲综合中文字幕68页| 亚洲精品无码久久久久| 国产一区二区三区久久| 欧美美最猛性xxxxxx| 国精产品一区一区| 国产成人一区| 日韩国产欧美精品在线| 日韩欧美中文在线视频| 日本午夜免费一区二区| 欧美伊人久久大香线蕉综合69| 黄色av网址在线播放| 牛牛精品视频在线| 伊人色综合久久天天| 一本一道久久a久久综合精品| 深夜福利在线视频| 成人av一区二区三区| 亚洲xxx视频| 国产乱淫a∨片免费视频| 奇米精品一区二区三区四区| 国产福利成人在线| 亚洲天堂男人av| 噜噜噜久久亚洲精品国产品小说| 91爱视频在线| 日韩 欧美 综合| 伊人天天综合| 国语自产精品视频在线看一大j8 | 亚洲午夜精品久久久久久高潮 | 性欧美18一19内谢| 欧美69xxx| 亚洲私人影院在线观看| 在线一区亚洲| 黄av在线播放| 亚洲天堂免费看| 四虎精品欧美一区二区免费| 182tv在线播放| 一个色综合av| 亚洲不卡中文字幕无码| 无遮挡爽大片在线观看视频| 色成年激情久久综合| 国产无套粉嫩白浆内谢的出处| 快播电影网址老女人久久| 在线看日本不卡| 日本黄大片一区二区三区| 99精品在线免费观看| 欧美精品在线视频| 亚洲欧美日韩中文字幕在线观看| 白嫩白嫩国产精品| 国产偷亚洲偷欧美偷精品| 精品国产成人亚洲午夜福利| 97人人精品| 欧美黑人一级爽快片淫片高清| 精品成人免费视频| 日日摸夜夜添夜夜添亚洲女人| 国产免费一区视频观看免费| 精品国产99久久久久久宅男i| 成人18视频日本| 日韩精品无码一区二区三区| 欧美激情午夜| 香港成人在线视频| 99视频在线视频| 蜜桃在线一区| 亚洲欧美国产va在线影院| 毛片久久久久久| 1024成人| 国产情人节一区| 天天躁日日躁狠狠躁喷水| 欧美激情中文字幕| 97碰在线视频| 国产精品天堂蜜av在线播放| 精品电影一区二区三区| 中文字幕伦理片| 亚洲男人的天堂在线视频| 国产情侣一区在线| 日韩精品在线视频观看| 免费精品在线视频| 日韩午夜av| 91久久在线视频| 四虎成人免费在线| 亚洲精选视频免费看| 日日碰狠狠躁久久躁婷婷| 香蕉成人app| 自拍偷拍亚洲在线| 成年免费在线观看| 国产成人精品一区二区三区四区| 欧美日韩免费精品| gratisvideos另类灌满| 欧美日韩成人综合| 少妇大叫太粗太大爽一区二区| 重囗味另类老妇506070| 国产精品91久久久| 天天操天天干天天| 一区二区在线观看视频在线观看| 一级黄色香蕉视频| 精品欠久久久中文字幕加勒比| 日韩有码在线电影| 天天干,天天干| 99久精品国产| 日韩欧美不卡在线| 一区二区三区国产好| 精品国产美女在线| 中文字幕在线播出| 国产欧美精品国产国产专区| 欧美精品99久久| 狼人天天伊人久久| 久久人人爽人人爽人人片av高请| 国产内射老熟女aaaa∵| 国产精品嫩草99a| 漂亮人妻被中出中文字幕| 超碰地址久久| 欧美激情一区二区三区在线视频观看| 国产精品久久久久久久免费看| 国产日韩亚洲欧美综合| av免费中文字幕| 亚洲国产精品嫩草影院久久av| 国内免费精品永久在线视频| 亚洲老妇色熟女老太| 曰韩精品一区二区| 国产精品99久久久精品无码| 自拍欧美日韩| 亚洲综合在线做性| 蜜乳av一区| 亚洲第一福利视频| 国产成人在线免费视频 | 亚洲成人av免费在线观看| 国产综合自拍| 国产精品裸体一区二区三区| 免费影视亚洲| 亚洲激情在线观看视频免费| 天堂网一区二区三区| 久久影视一区二区| 成年人在线观看视频免费| 第一会所亚洲原创| 91精品免费视频| 亚洲无线看天堂av| 精品99久久久久久| 欧美一二三区视频| 亚洲国产电影在线观看| 九九热免费在线观看| 午夜精品久久99蜜桃的功能介绍| 99国产在线| 亚洲国产欧美日本视频| 在线精品播放av| 国产后入清纯学生妹| 亚瑟在线精品视频| 国产精品20p| 激情小说亚洲一区| 国产超碰91| 亚洲精品女人久久久| 亚洲国产黄色| 欧美一区二区三区在线免费观看 | 亚洲婷婷免费| 久久艳妇乳肉豪妇荡乳av| av在线一区不卡| 九九热r在线视频精品| 亚洲欧美色视频| 欧美日韩一区二区在线观看视频 | 欧美日本亚洲韩国国产| 国产亚洲精品美女久久久m| 亚洲女同av| 操日韩av在线电影| 无码国产伦一区二区三区视频| 91福利精品视频| 久草视频在线资源站| 久久久久久亚洲综合影院红桃 | 一区二区视频在线免费观看| 一区二区三区丝袜| 国产肥白大熟妇bbbb视频| 国产专区综合网| 国产l精品国产亚洲区久久| 香蕉国产精品| 欧美日韩一区在线观看视频| 美女精品视频在线| 国产精品扒开腿爽爽爽视频 | 三级全黄做爰视频| 久久一日本道色综合久久| 中文字幕乱码一区二区三区| 理论片一区二区在线| 国产在线高清精品| 在线人成日本视频| 久久亚洲精品视频| 久久精品蜜桃| 日韩午夜在线观看| 免费在线不卡av| 疯狂做受xxxx高潮欧美日本| 欧美日韩在线视频免费播放| 欧美国产日韩亚洲一区| 秘密基地免费观看完整版中文 | 国产成人av在线| 国产精品一卡二卡三卡 | eeuss影院在线播放| 日韩精品专区在线| 无码视频在线观看| 欧美日韩精品在线播放| 久久伊人成人网| 成人免费在线视频观看| 18禁裸乳无遮挡啪啪无码免费| 国产高清不卡二三区| 九九九九九国产| 日本色综合中文字幕| 欧美色图另类小说| 亚洲精品专区| 久久久久久www| 欧美日韩三级| 亚洲激情免费视频| 午夜精品视频一区二区三区在线看| 日本一区二区三区四区在线观看| 亲子伦视频一区二区三区| 国产乱码精品一区二区三区不卡| 秋霞午夜一区二区三区视频| 成人写真视频福利网| 日韩黄色三级| 国产区精品视频| 亚洲人成网站在线在线观看| 国产中文日韩欧美| 欧美亚洲综合视频| 国产精品综合不卡av| 欧美视频免费看| 国产免费亚洲高清| 日韩专区视频网站| 成人精品福利视频| 中文成人激情娱乐网| 成人精品一区二区三区电影黑人| 成人综合日日夜夜| 444亚洲人体| 最新国产精品精品视频| 国产成人一区二区三区免费看| japanese色系久久精品| 国产精品久久波多野结衣| 豆花视频一区二区| 久久偷看各类wc女厕嘘嘘偷窃| 亚洲影院天堂中文av色| 日本精品一区二区三区视频 | 中文字幕久热精品在线视频| 91高清在线视频| 久久精品99久久久久久久久| 图片区小说区亚洲| 国外成人性视频| 国产免费裸体视频| 激情综合网址| 国产免费成人在线| 久久精品国产秦先生| 91免费视频污| 波多野洁衣一区| 中国毛片在线观看| 国产精品久久久久久久久果冻传媒 | 精品国产精品国产偷麻豆| 日韩电影免费观看高清完整| 欧美激情777| 精品久久久久久无码中文野结衣| 一本综合久久| 亚洲三级视频网站| 国产精品1区2区3区| 国模私拍在线观看| 欧美高清一级片在线观看| 欧美成人一二三区| 色综合天天综合狠狠| 国产精品久久久久久久成人午夜| 精品不卡在线视频| 黄色美女一级片| 中文字幕久久亚洲| 丰满大乳少妇在线观看网站| 日本亚洲欧美成人| 欧美一级大片在线视频| 免费成人深夜夜行视频| 久久精品影视| 欧美日韩激情视频在线观看| 久久国产生活片100| 少妇被狂c下部羞羞漫画| 中文文精品字幕一区二区| 精品人妻在线播放| 欧美日韩一级二级| 蜜臀av午夜精品| 精品久久久av| 亚洲午夜天堂| 99在线观看视频| 日韩av有码| 成人免费在线小视频| 国产精品自拍三区| x88av在线| 精品国产乱码久久久久久虫虫漫画| 亚洲天堂中文字幕在线| 日韩精品免费看| 七七成人影院| 91九色国产视频| 欧美军人男男激情gay| 日本www在线视频| 国产精品一区二区黑丝| 日本成人免费在线观看| 欧美午夜电影在线| 女人18毛片一区二区三区| 精品国偷自产在线视频| 日本欧美韩国| 欧美二区三区| av不卡免费看| 老司机免费视频| 一区二区高清免费观看影视大全| 国产永久免费视频| 中文字幕亚洲无线码a| 欧美黑人一区| 久久爱av电影| 亚洲区第一页| 在线中文字日产幕| 一区二区不卡在线视频 午夜欧美不卡在 | 国内精品不卡| 国产一区二区丝袜高跟鞋图片| 国产欧美日韩影院| 亚洲精品乱码久久久久久自慰| 99久久久无码国产精品| 日本在线免费观看| 亚洲国产精品va在线| 国产乱码在线| 国产精品夜夜夜一区二区三区尤| 欧美三区不卡| 美女被爆操网站| 一区二区久久久久久| 99久久久无码国产精品免费| 久久九九亚洲综合| 欧美三级一区| 日韩在线观看a| 成人福利视频网站| 黄网在线观看视频| 亚洲精品影视在线观看| 欧美艳星kaydenkross| 欧美日韩综合网| 日韩成人av影视| 99国产精品免费| 欧美丰满美乳xxx高潮www| 麻豆影视国产在线观看| 91在线无精精品一区二区| 欧美黄色一区二区| 四虎精品一区二区| 日韩欧美精品网址| 岛国最新视频免费在线观看| 国产精品专区第二| 欧美日韩岛国| 国产偷人妻精品一区| 色综合咪咪久久| 1024视频在线| 成人看片在线| 国产精品亚洲产品| 九一在线免费观看| 91精品国产91久久久久久一区二区 | 亚洲一区二区三区日本久久九| 18禁网站免费无遮挡无码中文| 2021久久国产精品不只是精品| 奴色虐av一区二区三区| 久久久99久久精品女同性| 77成人影视| 黑森林福利视频导航| 国产精品久久久久久久久免费丝袜 | 亚洲成人网av| 91看片一区| 天堂av在线中文| av电影在线观看完整版一区二区| 国产99免费视频| 欧美精品在线免费观看| 亚洲理论电影片| 伊人五月天婷婷| 欧美日韩国产精品一区二区不卡中文| 国产精品一二三区视频| 亚洲一区二区三区香蕉| 国产精品久久久久毛片大屁完整版| 一级黄色毛毛片| 精品国产1区2区3区| 美女写真久久影院| 成人毛片100部免费看| 久久久亚洲午夜电影| 精品女同一区二区三区| 国产99久久精品一区二区永久免费 | 国产资源在线观看|