Android开发规范

Author Avatar
夜孤黎 1月 03, 2018
  • 在其它设备中阅读本文章

为了规范Android项目的开发工作,需要循序既定的开发规范,统一风格。

1、开发环境与IDE:

  1. 开发采用android studio3.0,java版本使用jdk1.8;
  2. 编码格式统一为UTF-8;
  3. android系统最低版本支持默认为4.0.3,有特殊要求的按要求指定;

2、特定技术规范:

  1. 日志打印使用PlatformLogPrint库;
  2. 项目使用mvp/mvc架构;
  3. 尽量使用kotlin替代java进行开发;
  4. 对于第三方库的引用,尽量先从Platform中寻找可用的库,如无已实现的功能模块则需要选择比较稳定、有作者在维护的开源项目;
  5. 引用第三方库要慎重,避免应用大容量的第三方库,导致客户端包非常大;

3、命名规范:

  1. 代码中的命名不允许使用拼音、中文的方式,尽量使用正确的英文拼写和语法,让阅读者易于理解,避免歧义。
  2. 包名全部采用小写,主包名采用com.[公司名称].[项目名称]的命名方式,下级包名可根据不同模块进行命名。
  3. 类名、接口名、枚举名采取大驼峰式命名,第一个和后面的单词都要第一个字母大写。
  4. 常量、枚举等均采用大写形式,用下划线区分各单词。
  5. 资源文件命名全部小写,采用下划线命名法,注意图片文件命名只能用小写字母、数字,否则会导致R文件无法编译。
  6. string.xmldimen.xmlcolor.xmlname命名使用下划线命名法,采用以下规则:模块名+逻辑名称,同一个界面的所有资源放到一起,方便查找;
  7. stylename命名使用小驼峰命名法,将一组相关的和重复android:****的属性放到一个通用的style中以方便复用。

4、编程规范

  1. 编辑完代码文件后使用ctrl+alt+L进行格式化;
  2. 编辑完代码文件后删除多余的import,尽量减少警告出现;
  3. strings.xml中使用%1$s实现字符串的通配;
  4. 数据一定要效验,例如字符型转数字型,如果转换失败一定要有缺省值;
  5. 对于未完成的方法,使用//TODO加以标记;
  6. 为了减少他人阅读你代码的痛苦值,请在关键地方做好注释。
  7. 异步任务的ui操作需要判断原activity是否处于激活状态;
  8. 方法基本上都按照调用的先后顺序在各自区块中排列;
  9. 及时关闭打开的输入输出流;
  10. 尽量减少对变量的重复计算;
  11. 不要在循环中使用try…catch…,应该把其放在最外层;
  12. 关键逻辑点需要添加日志打印,用于快速定位错误;
  13. 每个switch语句都需要包含一个default语句组,即使它什么代码也不包含。

5、UI规范

  1. 软键盘的弹出控制,不要让其覆盖输入框;
  2. 合理定制EditTextandroid:imeOptions属性,提升用户体验;
  3. 复杂布局使用RelativeLayout
  4. 合理布局,有效运用<include>标签;
  5. 建议使用RecyleView替代ListView

6、代码提交规范

  1. 提交代码之前先在本地进行测试,确保项目能编译通过,且能够正常运行,不可盲目提交;
  2. 必须保证服务器上的版本是正确的,项目有错误时,不要进行提交;
  3. 提交时注意不要提交本地自动生成的文件,比如项目中的 ideabuild文件夹是不需要提交的。
  4. 对提交的信息采用明晰的标注;

7、性能规范

  1. ActivityFragment里面有许多重复的操作以及操作步骤,所以我们都需要提供一个BaseActivityBaseFragment,让所有的ActivityFragment都继承这个基类;
  2. 尽量不要使用HashMap,可使用针对android优化的SparseArray进行替代;
  3. 尽量不要使用枚举,因为枚举会牺牲执行的速度并大幅增加文件体积,很容易造成OOM,请使用静态常量加上@IntDef@StringDef注释进行替代;
  4. 尽量采用懒加载的策略,即变量在需要的时候才创建;
  5. 使用带缓冲的输入输出流进行IO操作;
  6. 页面需要显示web图片时,最好异步加载以提高用户体验;
  7. 尽量避免static成员变量引用资源耗费过多的实例,比如Context
  8. 使用WeakReference代替强引用,弱引用可以让您保持对对象的引用,同时允许GC在必要时释放对象,回收内存。对于那些创建便宜但耗费大量内存的对象,即希望保持该对象,又要在应用程序需要时使用,同时希望GC必要时回收时,可以考虑使用弱引用;
  9. activity销毁时及时回收Bitmap;
  10. 服务端可以实现的,尽量不要放在客户端;
  11. 不要重用父类的handler,对应一个类的handler也不应该让其子类用到,否则会导致message.what冲突;
  12. debug日志需要在提交release版本时停止打印。

This blog is under a CC BY-NC-SA 3.0 Unported License
本文链接:http://yeguli.cn/2018/01/03/Android开发技术规范/