Android代码规范
2016-05-28 12:20
302 查看
1、Android命名规范
Java类文件命名规范
1、 Activity命名规范:以Activity作为后缀。例如:PersonActivitty
2、Adapter命名规范:以Adapter作为后缀 。例如:PersonAdapter
3、Entity命名规范:大多以Entity作为后缀。例如:PersonEntity
4、其他的类似于前面的要求。例如:Fragment,PopupWindow等等
方法命名和实体变量等命名
方法命名需要通俗易懂,例如:初始化页面数据 initDatas 首字母小写,第二个单词首字母大写,实体类属性名、局部变量、全局变量都遵循此规则,注意与常量区分开来
常用方法命名:
资源文件命名规范
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
常用控件的缩写
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中
例如:
这样做可以统一样式,方便修改,如果有多个相同属性我们还可以定义style。
坚持使用Gson,fastJson自定义实体来作为API数据的载体
像
页面之间的数据传递,坚持使用intent、budle等携带数据的方式,禁止使用全局静态变量的方式。
为控件添加事件统一使用实现onItemClickListenrer接口的方式
例如:并且强烈要求每个点击事件都要加上注释
禁止直接在Layout中直接绑定点击事件
Activity中禁止嵌套内部类,尽量独立出来,放到对应的包中
Adapter的编码规范
1、所有Adapter类全部放到Adapter的包中。
2、Adapter绑定的数据如果是固定的数量使用数组
3、在Adapter中创建适合自身的ViewHolder类,统一命名为ViewHolder。
图片的处理统一使用第三方组件,ImageLoder或Fresco来进行异步加载
使用SharedPreferences存储简单数据,例如:开关状态等。对于复杂的数据类型,建议存储到本地文件中。
尽量使用ApplicationContext代替使用Context,否则会引起内存泄漏,但是跟窗口周期相关的必须使用Context。
数据类型转换一定注意校验
使用常量代替枚举类型
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 |
控件缩写加上下划线加上逻辑名称
例如:
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。
数据类型转换一定注意校验
使用常量代替枚举类型
相关文章推荐
- Android进阶专题十一:Android 测试
- Android短信开发,短信接收时被拆分的解决方案
- Android进阶专题十:界面布局优化
- 对Android的Opengl ES 中setLookAtM函数的一点理解
- Android进阶专题九:电池续航
- Android SlidingMenu 使用
- Android中的事件分发
- Android进阶专题八:性能评估
- Android进阶专题七:多核处理器优化
- Android Virtual Device Manager不能建立新的设备类型的应急解决方法
- Android FileObserver 实现原理(inotify)
- Handler与Message
- 框架模式 MVC 在Android中的使用
- 初学 android databinding
- Android开发技术问题收集
- Android进阶专题五:NDK JNI变量和方法调用
- Android音频开发(5):音频数据的编解码
- Android音频开发(4):如何存储和解析wav文件
- Android进阶专题三:NDK Makefile
- Multiple dex files define Landroid/support/v7/recyclerview/R$attr;