公司安卓项目规范

1:项目代码目录结构: 

 这里是整个项目的包结构,保密原因在这里就不贴了。

 

2:命名规范:

2.1、java代码文件命名规范:

 a尽量使用英文命名,单词不缩写,不要使用下划线拼接,而且采取首字母大写拼接

 b一般的java代码文件命名以继承名类名为后缀,例如:继承自Activity的文件可写成 MainActivity.java继承Adapter可以写成UserListAdapter.java

 c一些纯粹的类名命名遵守以大的归类为前缀,可自定,例如:InfoRank.java

 d首字母及多个单词拼接每个单词首字母必须大写,不要用下划线连接。例如UserInfo.java.    不要写成user_info.java

 ejava类里面的方法名以小写开始,如果多个单词,从第二个单词开始首字母大写,例如:     getUserList()

 f:对于java类中成员变量,要采用英文单词,首字母小写,多个单词从第二个单词开始首     字母大写拼接,不要使用下划线拼接。例如:userMoney

 g:对于java类中的常量,只能包含字母和_,字母全部大写,单词之间用_隔开。例如:     MAX_AGE

 

2.2、布局文件命名规范:

 a:命名以全小写,单词不缩写,多个单词以下划线拼接,例如:user_info_list.xml

    user_info_list_item.xml(在使用listview时候就会用到一个子布局文件)

 b:布局文件的命名可参照代码文件的命名,一般来说一个页面一个xml,对应也会有一个     java代码,对应的javaxml命名可相同。如果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_topbg_listview

e:显示类图片命名以view为前缀。

f:展示类图片命名以dis为前缀,如幻灯片播放。

g:临时用图命名以tmp为前缀。

h:其他图上命名以other为前缀

 

3、代码规范

a所有代码都应该对齐,排列整齐规则。如果只有一行注释,尽量使用//;如果多行就使    用/*    */。代码之间有必有的空行,但是不要空白一大片。对于不要的代码和注        释,应该都删除掉。对于注释了但是可能还要用的,可以不删除。对于每个类里面定义    的变量,应该一行一个,在字段的后面注释具体含义。

bActivityActivity尽可能减少参数传递。使得每个类都相对独立。而且每个Activity里    面的设配器和异步程序或者其他,能独立出去尽量独立出去。写成一个类,或者一个通用    的方法。这也更符合java面向对象的思想,使得代码更加简洁清晰。便于维护。每个类    前面都要注释是什么功能,什么界面,需要接收那些参数(包括名字和代表的含义)。

c:对于任何一个方法如果在几个类里面都有(2次以上),应该提取出来,写成一个通用的,    去调用,而不是每个类里面复制一份。便于维护,也减少代码重复。比如计算倒计时的    方法等。

d:对于要经常获取的值,应该在一开始就获取一次,然后定义一个静态变量,每次去调用    这个变量,而不是每次去读取那个方法,比如获取手机屏幕,一开始就获取一次,然后    保存到静态变量里面,而不是每次去获取手机屏幕。

e:对于样式相同的控件,应该把样式提取出来,统一定义到style.xml里去,像返回键,继    续购彩按钮,以后定义这样的控件,只有定义一个id,调用style就可以了。

f不要重用父类的handler,对应一个类的handler也不应该让其子类用到,否则会导致       message.what冲突

gactivity中在一个initUI()方法初始化所有控件,并且在initListener()方法里面设置所有监    听事件,View.OnClickListener中处理所有的监听,但是对于具体处理的业务逻辑可以    写成一个方法,监听里面调用就可以了。

h数据一定要效验,例如字符型转数字型,如果转换失败一定要有缺省值。服务端响应数    据是否有效判断。比如网络请求返回code是否是”0000”。所有的校验都写成一个         validatae()方法。通过返回Boolean值来确定是否通过校验,不要和业务逻辑写在一起。

i:有的按钮要避免重复点击。比如网络请求,点击之后就禁用掉。待异步处理完才释放。

j:对于字体都是使用sp为单位,对于高度、宽度、缩进等都使用dip为长度单位,所有布    局都要自适应屏幕,可以在Eclipse选择3.24.05.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变量。

 

..............待补充.............

 

 

 

 

 

 

 

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。