加入收藏 | 设为首页 | 会员中心 | 我要投稿 河北网 (https://www.hebeiwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 业界 > 正文

腾讯架构师教你如何写出Android规范文档

发布时间:2019-11-04 22:12:46 所属栏目:业界 来源:techlearn
导读:媒介 一份及格的代码不该只满意于实现成果, 更应该遵循精采的类型. 遵循精采的代码类型有利于: 晋升措施不变性, 镌汰代码隐患, 低落妨碍率; 加强可扩展性, 大幅进步维护服从; 同一尺度, 晋升多人协作服从; 利便新人快速上手, 在项目组职员产生变换时担保项
副问题[/!--empirenews.page--]

媒介

一份及格的代码不该只满意于实现成果, 更应该遵循精采的类型. 遵循精采的代码类型有利于:

  • 晋升措施不变性, 镌汰代码隐患, 低落妨碍率;
  • 加强可扩展性, 大幅进步维护服从;
  • 同一尺度, 晋升多人协作服从;
  • 利便新人快速上手, 在项目组职员产生变换时担保项目进度。

这里梳理一下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必必要成对呈现;

(编辑:河北网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读