1:项目代码目录结构:
这里是整个项目的包结构,保密原因在这里就不贴了。
2:命名规范:
2.1、java代码文件命名规范:
a:尽量使用英文命名,单词不缩写,不要使用下划线拼接,而且采取首字母大写拼接。
b:一般的java代码文件命名以继承名类名为后缀,例如:继承自Activity的文件可写成 MainActivity.java。继承Adapter可以写成UserListAdapter.java。
c:一些纯粹的类名命名遵守以大的归类为前缀,可自定,例如:InfoRank.java。
d:首字母及多个单词拼接每个单词首字母必须大写,不要用下划线连接。例如UserInfo.java. 不要写成user_info.java。
e:java类里面的方法名以小写开始,如果多个单词,从第二个单词开始首字母大写,例如: getUserList()。
f:对于java类中成员变量,要采用英文单词,首字母小写,多个单词从第二个单词开始首 字母大写拼接,不要使用下划线拼接。例如:userMoney。
g:对于java类中的常量,只能包含字母和_,字母全部大写,单词之间用_隔开。例如: MAX_AGE。
2.2、布局文件命名规范:
a:命名以全小写,单词不缩写,多个单词以下划线拼接,例如:user_info_list.xml。
user_info_list_item.xml(在使用listview时候就会用到一个子布局文件)。
b:布局文件的命名可参照代码文件的命名,一般来说一个页面一个xml,对应也会有一个 java代码,对应的java和xml命名可相同。如果BetRecord.java对应bet_record.xml
c:对于布局文件里面各个控件的命名,要遵循以文件名为开始。例如:在bet_record.xml, 退回键:@+id/bet_record_back,列表@+id/bet_record_listview,确定键
@+id/bet_record_submit,其他的控件要根据实际意义来命名,例如:
bet_record_no,bet_record_money,确保每个控件的名字在整个项目里面是唯一的。
2.3、图片资源文件命名规范:
a:命名以全小写,单词不缩写,多个单词用下划线拼接。
b:图片的命名必须唯一,整套图片直接存放于drawable-hdpi文件夹下,以命名分类。
c:按钮类图片命名以button为前缀,例如button_ok,button_cancel。
d:背景类图片命名以bg为前缀。例如:bg_top,bg_listview。
e:显示类图片命名以view为前缀。
f:展示类图片命名以dis为前缀,如幻灯片播放。
g:临时用图命名以tmp为前缀。
h:其他图上命名以other为前缀。
3、代码规范
a:所有代码都应该对齐,排列整齐规则。如果只有一行注释,尽量使用//;如果多行就使 用/* */。代码之间有必有的空行,但是不要空白一大片。对于不要的代码和注 释,应该都删除掉。对于注释了但是可能还要用的,可以不删除。对于每个类里面定义 的变量,应该一行一个,在字段的后面注释具体含义。
b:Activity与Activity尽可能减少参数传递。使得每个类都相对独立。而且每个Activity里 面的设配器和异步程序或者其他,能独立出去尽量独立出去。写成一个类,或者一个通用 的方法。这也更符合java面向对象的思想,使得代码更加简洁清晰。便于维护。每个类 前面都要注释是什么功能,什么界面,需要接收那些参数(包括名字和代表的含义)。
c:对于任何一个方法如果在几个类里面都有(2次以上),应该提取出来,写成一个通用的, 去调用,而不是每个类里面复制一份。便于维护,也减少代码重复。比如计算倒计时的 方法等。
d:对于要经常获取的值,应该在一开始就获取一次,然后定义一个静态变量,每次去调用 这个变量,而不是每次去读取那个方法,比如获取手机屏幕,一开始就获取一次,然后 保存到静态变量里面,而不是每次去获取手机屏幕。
e:对于样式相同的控件,应该把样式提取出来,统一定义到style.xml里去,像返回键,继 续购彩按钮,以后定义这样的控件,只有定义一个id,调用style就可以了。
f:不要重用父类的handler,对应一个类的handler也不应该让其子类用到,否则会导致 message.what冲突。
g:activity中在一个initUI()方法初始化所有控件,并且在initListener()方法里面设置所有监 听事件,View.OnClickListener中处理所有的监听,但是对于具体处理的业务逻辑可以 写成一个方法,监听里面调用就可以了。
h:数据一定要效验,例如字符型转数字型,如果转换失败一定要有缺省值。服务端响应数 据是否有效判断。比如网络请求返回code是否是”0000”。所有的校验都写成一个 validatae()方法。通过返回Boolean值来确定是否通过校验,不要和业务逻辑写在一起。
i:有的按钮要避免重复点击。比如网络请求,点击之后就禁用掉。待异步处理完才释放。
j:对于字体都是使用sp为单位,对于高度、宽度、缩进等都使用dip为长度单位,所有布 局都要自适应屏幕,可以在Eclipse选择3.2、4.0、5.4等不同屏幕来查看布局是否通配, 是否变形。排列异常等问题。
k:网络加载、文件处理、数据库处理等问题不要放在主现场,都要放在异步去操作。
l:不要使用异步加载和hander搭配使用,一般使用异步就可以了。Hander是和线程搭配使 用的。一般来说,使用异步比较耗资源,但是效率高。使用handler相对来说不耗资源, 但是效率较低,如果两者同时使用,又耗资源又效率低,建议不要一起使用。二者选一。
m:对于每一个对象在使用的时候都要判断,再去使用,避免因为数据变动或者无数据时导 致报错。其方法可以借鉴下面的代码:
1) 对于字符串 可以调用Function.strNotNull(str);
2) 对于对象if(obj!=null)
3) 对于集合Function.listNotNull(list); Function.mapNotNull(map);
4)对于数组Function.arrayNotNull(array);
n:所有静态的(static)不可变的(final)常量,都写到ConstantUtil.java里面。
所有静态的,可变的。需要共享的,都写到VariateUtil.java。比如屏幕尺寸;
所有的通用的函数和方法都写到FunctionUtil.java。其他的可以拓展。
o:对于定义变量,能定义成局部就不要定义到全局的里面去,这样便于内存回收。字符串拼接的不要使用String,而是使用StringBuffer。对于循环,不要把变量定义在里面。这样也可以减少内存的分配。例如
Person person = null;//定义在循环外面
int size = list.size();//避免重复调用
For(int i; i < size; i ++){
person = list.get(i);
//再去使用person对象
}
p:对于一个列表,如果使用的字段比较少,可以定义多个List<String>,但是如果使用比较 多,就应该把这些字段定义成一个Bean对象,然后把数据存储到List<Bean>。
q:使用静态变量方式实现界面间共享要慎重。每个单独的类不要在里面定义static变量。
..............待补充.............