Android 命名规范和编码规范

时间:2021-01-23 20:05:49

简明概要  多写注释

一、关于命名规范

对于开发项目来说肯定是要有统一的规范,然而命名规范需要做到哪几点呢?

 

    答: 首先,不能反人类。 再来就是,要望文而知其意

 

下面就来说说具体该怎么去规范我们的代码了。How to name?

 

  1)Java类文件

    i. Activity 命名规范: 以Activity作为后缀, 例如 personActivity

    ii. Adapter命名规范: 以Adapter作为后缀,  例如 personAdapter

    iii. Entity 命名规范: 大多以Entity作为后缀,  例如 personEntity。 值得注意的是,User是全局变量,不算实体,不用这样来命名。

   2)资源文件

     ①layout目录下(都用小写好么)

    i.  页面布局文件

            以act_ 为前缀,以Activity所在的Packege作为中缀, 以Activity的名称(去掉Activity)作为后缀。

          如: act_person_addcoustomer.xml  表示在Person模块下的AddCustomerActivity对应的Layout布局文件。

    ii. ListView中的item布局文件

          以item_作为固定前缀,列表项的名称作为后缀。

        如: item_lvuserlist.xml 表示在某个页面下有一个用户列表,控件名为lvUserList对应的item的layout布局文件。

    iii. Dialog布局文件:

          以dlg_作为固定前缀,Dialog的功能名称作为后缀。

        如: dlg_hint.xml  表示什么呢?都知道吧

  ②drawable目录下

    应该遵守以下命名规范:

      i. 对于只在一个页面使用的资源,就以该界面的名称作为前缀

      ii. 对于只在一个模块下多个页面使用的资源,就以该模块的名称作为前缀

      iii. 对于在各个模块、各个页面都有可能使用的资源,例如上导航、下导航,以common作为前缀

3) Java类中控件对象

    控件类型缩写 + 控件的逻辑名称(首字母大写),如登录按钮,可以命名为 btnLogin。

常用控件的缩写
控件 缩写 控件 缩写
LayoutView lv EditText et
RelativeView rv Timepicker tp
TextView tv toggleButton tb
Button btn Progress pb
ImageButton img WdbView wv
ImageView iv RantingBar rb
CheckBox chk Tab tab
RadioButton rb ListView lv
DatePicker dp MapView mv

4) Layout中控件对象

    与Activity中对应的控件名称保持一致。

  如: Button btnLogin = (Button)findViewById(R.id.btnLogin);

5) string.xml中的常量

       如: loginActivity_btnLogin_text

  因为这些值大多在layout中的控件上使用,所以以该常量所在的Activity名称作为前缀,后面接控件名称,再后面就可以*发挥了。

  另一个中是使用在Java代码中情景,

    若和具体Activity相关,以所在Activity名称作为前缀,和上面的一样;

    若涉及和公共模块和控件相关,就以common_作为前缀。

  更灵活的做法是,将其按照模块拆分为多个strings文件,只要resoures 标签下都是string标签就可以了,编译打包时会自动将同类文件进行合并。

6) 常量命名

  只能包含字母和下划线_, 字母全部大写,单词之间用下划线_隔开 例如: START_TIME

 

二、关于编码规范

  1) 需要分别类存放各种类

      如:

         |-src

          |---com.example.demo

            |---activity.others

            |---activity.personcenter

            |---adapter

            |---db

       依次还有: engine、 entity、 interfaces、 listener、ui、 utils 。。。

 

  2) 要怎么使用findViewById 语句?

  3) Layout中的常量,要在资源strings.xml中定义

  4) Layout中所有控件的字体大小,都定义在dimens.xml中

  5) 在Activity中,定义新的生命周期,从而将onCreate方法拆分为以下3部分:

     initVariables: 初始化变量(包括Intent上的数据和Activity内部使用的变量)

     initViews: 加载Layout布局文件,初始化控件

       loadData: 调用MobileAPI

  6) 坚持使用fastJSON自定义实体来作为MobileAPI的数据载体

  7) 页面之间传值,坚持使用Intent携带序列化实体数据的方式。禁止为了省事使用全局变量进行传值的方式。

  8) 为控件添加事件,使用.setOnclickListener();

  9) Activity中不要嵌套内部类,尽量都独立出来

  10)所有Adapter,都放在adapter这个包中; Adapter绑定的数据,一律为ArrayList<自定义可序列化实体>; 在Adapter中使用 ViewHolder实体类。

  11) 实体不要在不同模块间共享,但是可以在同一个模块下的不同页面之间共享。

  12) 为节省内存,请使用ArrayList<自定义实体>, 而不是HashMap

  13) 图片处理,请统一使用第三方组件ImageLoader 或 Fresco 来进行异步加载

  14) 什么时候使用SharedPreference? 对于简单的配置信息,设置页面的各种开关; 而对于复杂的对象,比如说User类,还是要存储到本地文件中为好。

  15) 尽量使用ApplicationContext 代替 Context, 否则会引起内存泄漏。 当然,也不是任何地方 ApplicationContext都可以代替Context,使用不当会导致崩溃。

  16) 数据类型转换一定要进行校验。

  17) 使用常量来代替枚举。    枚举的每一个值只能是一个整数,而没有toString这样的方法,所以不如在类中定义一个字符串常量方便。