一、命名规范
1.包命名
项目包名:com.公司名.项目名 例如:com.xinzong.etc
包名 | 说明 |
---|---|
com.xxx.xxx.activitys | 存放(一级)主界面activity (如:MainActivity)以及子activity的包(如登录界面的包:com.xxx.xxx.activitys.login) |
com.xxx.xxx.fragment | 存放所有fragment及子包,细节同上 |
com.xxx.xxx.bean | 实体类 |
com.xxx.xxx.widget | 自定义View、自定义dialog等 |
com.xxx.xxx.utils | 公用工具方法类(日期或者不同单位间的转换,文本解析,SharedPreferences存储,网络访问,日志等工具) |
com.xxx.xxx.db | 数据库相关 |
2.类命名
类描述 | 规范 | 示例 |
---|---|---|
基础父类 | 以Base开头 | BaseActivity |
Activity类 | 以activity后缀 | LoginActivity |
解析类 | 以Handler后缀 | JsonHanlder,MyXmlHanlder |
工具类 | 以Util或Manager后缀 | TaskManager(任务管理)PreferencesUtil |
数据库类 | 以DBHelper后缀 | MySqliteDBHelper |
3.变量命名
1) 变量采用小驼峰命名,如:tvName(TextView对象)
2) 类中控件名和布局ID一样,如:类中tvName 对应 布局中 R.id.tvName
3) 全局常量 名称全大写,用“_”分隔。如:public static final int MAX_NUM=999;
4) 静态变量 名称以s开头,如:public staitc int sMaxNum=999;
5) 非静态私有变量 名称以m开头,如:public int mMaxNum=999;(控件对象除外)
4.接口命名
1) 命名规则和类一样,以ible或able结尾,如:Runnable(自定义的Listener除外)
5.方法命名
1) 获取和设定某个值或对象用典型的getXXX 以及对应的 setXXX
2) 判断一个条件并且返回Boolean值 命名:isXXX 或 checkXXX或hasXXX
3) 初始化相关数据及资源的方法命名:initXXX
6.布局文件命名
描述 | 规范 | 示例 |
---|---|---|
Activity布局文件 | activity开头 | activity_main |
Fragment布局文件 | fragment开头 | fragment_home |
Dialog布局文件 | dialog开头 | dialog_confirm |
ListView item布局文件 | lvitem开头 | lvitem_rechange |
7.资源ID命名
1) 控件
控件 | 缩写 |
---|---|
TextView | tv |
Button | btn |
EditText | et |
ImageView | iv |
ImageButton | ib |
FrameLayout | fl |
RelativeLayout | rl |
LinearLayout | ll |
ViewPager | vp |
ListView | lv |
等…
2) 图片
命名 | 说明 |
---|---|
bg_XXX | 尺寸比较大的背景 |
btn_XXX | 可点击的按钮背景,一般存在普通和按下去2种样子,命名例子:btn_login_0,btn_login_10表示普通状态,1表示按下去的状态 |
icon_XXX | 小图标 |
3) drawable
说明 |
---|
背景选择器 |
shape资源文件等命名法四大类:Pascal、Camel、匈牙利和下划线。包名:全是小写;文件名:首字母全大写的Pascal命名;类:Common类:Pascal自定义属性类:Pascal+后缀Attribute(继承Attribute);(使用较少)自定义异常类:Pascal+后缀Exception(继承Exception);泛型中的传递:大写字母(使用较少)方法:Pascal用于构造,Camel用于普通;(动宾短语)接口:接口文件及名称定义:后面加个Interface,前面Pascal;事件接口定义:后缀Listener;变量:私有成员变量:Pascal+前缀m;静态成员变量:Pascal+前缀s(只是类里面的,如果写到函数里面就不加);函数局部变量:Camel;(优化:_+Pascal)方法参数:Camel;(p+Pascal)循环中的变量:缩写字母,无意义的字母命名格式化严格换行:一个分号一换行;建议一个大括号一行(不要跟在末尾);严格缩进:使用Tab缩进,注释缩进和代码缩进对齐严格注释:文件、类、方法、方法参数、有含义的变量、属性都要注释;文件和类的注释一定要包含如下元素:Name、Description、Version、Date、Author、Change、Copyright;(遵循JavaDoc标准);变量前面用//在上一行注释声明位置:1、将所有的框架定义的命名空间为一组,自定义的和第三方的命名空间放在另一组;2、类成员变量的声明位置:所有的成员变量都应该声明在顶部,同时使用一个空行来将它们和属性以及方法分开;3、局部变量声明位置:放到方法顶部使用Java预定义类型而不是用类名来声明变量(较少使用)编码逻辑规范1、避免将多个类放在一个文件里,除非是一次性使用的内部类;2、一个方法的代码长度最好不要超过35行;3、原则上,尽量不要手动去修改系统自动生成的代码;4、final String取代String,int也是一样;5、不推荐在循环语句中,直接进行return操作;6、不要使用goto语句;7、处处要考虑异常情况;8、仅对需要对外公布的使用public,其余的使用private或者internal;9、尽量不要提供public和protected程序变量,使用属性代替它们;(get、set)10、不要在系统自动生成的函数直接写业务代码,,最好自定义函数,然后调用;11、总是使用接口,推荐使用显式接口实现;12、在switch语句中总是要有default字句来显示信息;项目目录规范Requirment、Design、Planning、Help、Log、Source、Publish、Test |