Android代码规范

来源:互联网 发布:photoshopcs6 for mac 编辑:程序博客网 时间:2024/05/17 13:44

1、Android命名规范

  • Java类文件命名规范

    1、 Activity命名规范:以Activity作为后缀。例如:PersonActivitty

    2、Adapter命名规范:以Adapter作为后缀 。例如:PersonAdapter

    3、Entity命名规范:大多以Entity作为后缀。例如:PersonEntity

    4、其他的类似于前面的要求。例如:Fragment,PopupWindow等等

  • 方法命名和实体变量等命名

    方法命名需要通俗易懂,例如:初始化页面数据 initDatas 首字母小写,第二个单词首字母大写,实体类属性名、局部变量、全局变量都遵循此规则,注意与常量区分开来
    常用方法命名:

    方法名说明initXX()初始化相关方法,使用init为前缀标识,如初始化布局initView() isXX() checkXX()方法返回值为boolean型的请使用is或check为前缀标识 getXX() 返回某个值的方法,使用get为前缀标识 processXX() 对数据进行处理的方法,尽量使用process为前缀标识 displayXX()弹出提示框和提示信息,使用display为前缀标识 saveXX() 与保存数据相关的,使用sav为e前缀标识 resetXX() 对数据重组的,使用reset前缀标识 clearXX()清除数据相关的 removeXXX() 清除数据相关的 drawXXX() 绘制数据或效果相关的,使用draw前缀标识

  • 资源文件命名规范

    1、页面布局文件。以act_作为前缀,以Activity所在的Package作为中缀,以Activity的名称(去掉Activity)作为后缀。注意都是小写。例如:对于Person这个模块下的AddCustomerActivity,它的layout文件就应该是:act_person_addcustomer.xml

    2、ListView的item布局文件。以item_作为固定前缀,列表项的名称为后缀。注意都是小写。例如:某个页面下有一个用户列表,控件名为lvUserList,那么item的layout就应该是:item_lvuserlist.xml

    3、Dialog布局文件。以dlg_作为固定前缀,Dialog的功能名称作为后缀。注意都是小写。例如:dlg_hint.xml

    4、drawable目录下文件命名规范。drawable目录下的资源,大部分是图片,此外,还有一部分xml文件,用于Selector,background等。但无论是图片还是xml文件,都应该遵循以下命名规范:

    • 对于只在一个页面使用的资源,就以该页面的名称作为前缀。
    • 对于只在一个模块下多个页面使用的资源,就以该模块的名称作为前缀。
    • 对于在各个模块、各个页面都有可能使用的资源,比如说上导航、下导航,以common作为前缀。
  • Java类中控件对象的命名规范

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

    控件缩写控件缩写LinearLayoutllEditTextet RelativeLayoutrlTimePickertpTextViewtvToggleButttontbButtonbtnProgressBarpbImageButtonibWebViewwvImageViewivRantingBarrbCheckBoxcbTabtabRadioButtonrbListViewlvDatePickerdpMapViewmp

  • Layout中控件对象的命名规范

    控件缩写加上下划线加上逻辑名称
    例如:
    Button btnLogin=(Button)findViewById(R.id.btn_login);

  • strings.xml常量的命名规范

    因为这些值大多在layout中的控件上使用,所以以该常量所在的Activity名称作为前缀,后面接控件名称,在后面就自由发挥了,比如登录页面上显示的按钮文字,就可以命名为:loginActivity_btnLogin_text
    如果是在java代码中使用,可能出现在Activity中,也可能出现在工具类Utils中,这个时候如果跟具体的Activity相关,那么规则跟上面一致,以所在Activity名称作为前缀,如果涉及到公共模块和控件相关,就以common_作为前缀。
    strings.xml的规则,我们以模块来进行划分,例如:strings_person.xml,需要注意的是常量命名时为了避免各个模块的strings文件常量重名的问题,需要在每个常量前面加上模块名称前缀
    例如:person_loginActivity_btnLogin_txt

  • 常量命名

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

2、Android编码规范

  • 分门别类存放各种类

    工具类、实体类、ui、Listener、Interface、adapter等专门创建各个的包,如果是activity或者fragment又要以模块区分,例如:com.heart.activity.person com.heart.activity.search

  • 使用findViewById语句

    控件声明为Activity级别,如果有多个相同的控件,可以以“,”隔开
    例如:private TextView tvName,tvDescription,tvSex;

  • layout和java文件中禁止直接出现中文

    需要首先在strings文件中定义,以getResource或者@string方式获取

  • Layout中所有控件的字体大小,边距等,都定义在dimens.xml中

    例如:

   <!--字体大小-->   <dimen name="font_size_tiny">10sp</dimen>   <dimen name="font_size_small">12sp</dimen>   <dimen name="font_size_normal">14sp</dimen>   <dimen name="font_size_normal_high">16sp</dimen>   <dimen name="font_size_large">18sp</dimen>   <dimen name="font_size_large_high">20sp</dimen>   <dimen name="font_size_xlarge">22sp</dimen>   <!--边距大小-->   <dimen name="offset_2dp">2dp</dimen>   <dimen name="offset_4dp">4dp</dimen>   <dimen name="offset_6dp">6dp</dimen>

这样做可以统一样式,方便修改,如果有多个相同属性我们还可以定义style。

  • 坚持使用Gson,fastJson自定义实体来作为API数据的载体

    JSONObject、JSONArray、HashMap<String,Object>、ArrayList<String,Object>等不能够序列化的实体禁止使用。除非为了实现某个算法,临时使用。

  • 页面之间的数据传递,坚持使用intent、budle等携带数据的方式,禁止使用全局静态变量的方式。

  • 为控件添加事件统一使用实现onItemClickListenrer接口的方式

    例如:并且强烈要求每个点击事件都要加上注释

      //绑定监听       btnBack.setOnClickListener(this),       btnBack.setOnClickListener(this)      @Override      onClick(View v){       switch(v,.getId){         case R.id.btn_back:            //销毁当前activity            this.finished();           break;             case R.id.btn_back:             //登录             .......           break;     }         }

禁止直接在Layout中直接绑定点击事件

<Button  android:OnClick=".."......>

  • Activity中禁止嵌套内部类,尽量独立出来,放到对应的包中

  • Adapter的编码规范

    1、所有Adapter类全部放到Adapter的包中。

    2、Adapter绑定的数据如果是固定的数量使用数组<自定义实体类>,否则一律使用ArrayList<自定义实体类>

    3、在Adapter中创建适合自身的ViewHolder类,统一命名为ViewHolder。

  • 图片的处理统一使用第三方组件,ImageLoder或Fresco来进行异步加载

  • 使用SharedPreferences存储简单数据,例如:开关状态等。对于复杂的数据类型,建议存储到本地文件中。

  • 尽量使用ApplicationContext代替使用Context,否则会引起内存泄漏,但是跟窗口周期相关的必须使用Context。

  • 数据类型转换一定注意校验

  • 使用常量代替枚举类型

1 0
原创粉丝点击