您的位置:首页 > 移动开发 > Android开发

Android 命名规范和编码规范

2016-06-12 18:00 260 查看
简明概要 多写注释

[b]一、关于命名规范[/b]

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

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

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

  1)[b]Java类文件[/b]

    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 表示什么呢?都知道吧

  [b]②drawable目录下[/b]

[b]    [/b]应该遵守以下命名规范:

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

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

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

3) Java类中控件对象

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

常用控件的缩写

控件缩写控件缩写
LayoutViewlvEditTextet
RelativeViewrvTimepickertp
TextViewtvtoggleButtontb
ButtonbtnProgresspb
ImageButtonimgWdbViewwv
ImageViewivRantingBarrb
CheckBoxchkTabtab
RadioButtonrbListViewlv
DatePickerdpMapViewmv
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这样的方法,所以不如在类中定义一个字符串常量方便。

          
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: