android开发编码规范

命名规范

android包命名规范

因为android包目录的命名会直接影响到整个APP项目工程后期的开发效率和拓展性,所以在创建项目的初期,包目录的命名非常重要。

android工程本身对包目录命名没有要求,可以将代码文件直接放置在默认目录下,但这样做会导致很多无关文件的堆积,不利于查找以及维护,所以一般不建议采用这种方式。

android包目录命名常用的方式有两种:
PBL(package by Layer) 和
PBF(package by Feature)。

1. Package By Layer

PBL 是按照层次划分的,实际就是按照职能划分,如在根目录里面命名activity,fragment、view、service、db、net、util、bean、base等包名。

例如activity的职能是管理所有的activity,只要这个类继承自activity,都放在这个目录下,以此类推。

早期的android APP开发采用这种形式开发。


d643d2a08932131cf088faf4cbe1085.jpg

PBL优点

  • 项目结构清晰明了,上手快
  • 适合开发人员不多、项目功能简单、后期维护不大的项目。

PBL缺点

  • 低内聚
    同一个目录下会有各种功能模块,这些模块本身没有很强的关联性,却被放在一起,导致聚合性降低。
  • 高耦合
    指的是目录之间的关联性,(例如activity目录内可能引用到fragment目录里面的类,导致目录之间耦合性较高).
  • 影响开发效率
    开发一个功能模块,往往需要在不同的包目录之间切换,目录之间频繁切换会影响开发效率,同样,修改、调试一个功能也需要这样的操作,如果后期项目功能代码增多,会大大降低开发效率。

2.Package By Feature

PBF是按照功能划分包目录的,以功能模块作为目录名,所有与这个功能模块相关的开发都放在这个目录内。

image.png

可以看到,除了与业务无关的模块,如utils这样的通用模块,每个包目录都对应一个功能模块,Google的项目采用PBF进行包目录的名

PBF优点

  • 高内聚
    所有功能都在一个包下完成。
  • 低耦合
    包目录之间没有很强的关联性,以模块的功能只需要在对应的包目录下面即可进行开发,除了基础类以外,一般不需要引入其他类。
  • 开发效率高
    增删改查都只需要在对应的包目录下操作即可,便于团队开发管理,提升问题排查效率,也方便后续开发人员接收。
  • 便于后期组件转化
    如果项目是按照PBF来进行包目录划分的,后期进行组件化改造发的时候会非常的方便,可以直接把功能模块独立出来作为一个组件,同时划分好代码边界,对外保留好模块间的访问接口。

android代码命名规范

以java为例,来说明一下如何制定代码的命名规范,命名规范如下:

代码命名不以下划线和美元符号开头。

类名

采用大驼峰命名法 :【功能】+ 【类型】
Activity类:命名以Activity为后缀。如:LoginActivity。
Fragment类:命名以Fragment为后缀。如:ShareFragment。

方法名

采用小驼峰命名法
初始化方法,命名以init开头,如initView。
点击方法,命名以to开头,如:toLogin。
设置方法,命名以set开头,如:setData。
具有返回值的获取方法,命名以get开头 如:getData.
通过异步加载数据的方法,命名以load开头,如:loadData
布尔性的判断方法,命名以is、has或者check开头 如:isEmpty、checkNull。
对数据进行处理,命名以handle开头,如:handleUserInfo.
弹出框名称以show开头,如:showAgreement.
更新数据,命名以update开头,如:updateUserInfo。
保存数据,命名以save开头,如:saveUserInfo。
重置数据,命名以reset开头,如:resetUserInfo.
删除数据,命名以delete开头,如:deleteUserinfo。
查询数据,命名以query开头,如:queryUserInfo。
移除数据,命名以remove开头,如:removeUserInfo。

变量名

采用小驼峰命名法,变量名应该简短有规则,所有变量都要显示的赋值
如:int number = 0;
布尔变量应该包含Is 如:isFirstLogin。

  • 成员变量(类变量)
    常量、静态变量全大写,采用下划线命名法
    其他变量以消息字母开头,前面不在加任何前缀。
public class Demo{
  public static final int SOME_CONSTANT = 2020;
  public int publicField = 1;
  private static Demo sSingleton;
  int mPackagePrivate;
  private int mPrivate = 0;
  protected int mProtected = 10;
}
  • 局部变量
    变量为一个单词,以小写字母开头。
    如:GiftBean bean。
  • 参数
    参数为一个或者多个单词组成,以小写字母开头。
    如: fun(int position)、fun(String userName)。
  • 临时变量
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容