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
常用控件的缩写控件 缩写 控件 缩写 LinearLayout ll EditText et RelativeLayout rl TimePicker tp TextView tv ToggleButtton tb Button btn ProgressBar pb ImageButton ib WebView wv ImageView iv RantingBar rb CheckBox cb Tab tab RadioButton rb ListView lv DatePicker dp MapView mp
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。
数据类型转换一定注意校验
使用常量代替枚举类型