简明概要 多写注释异步
1、关于命名规范布局
对于开发项目来讲确定是要有统一的规范,然而命名规范须要作到哪几点呢?字体
答: 首先,不能反人类。 再来就是,要望文而知其意。ui
下面就来讲说具体该怎么去规范咱们的代码了。How to name?编码
1)Java类文件spa
i. Activity 命名规范: 以Activity做为后缀, 例如 personActivity。
xml
ii. Adapter命名规范: 以Adapter做为后缀, 例如 personAdapter。对象
iii. Entity 命名规范: 大多以Entity做为后缀, 例如 personEntity。 值得注意的是,User是全局变量,不算实体,不用这样来命名。生命周期
2)资源文件事件
①layout目录下(都用小写好么)
i. 页面布局文件:
以act_ 为前缀,以Activity所在的Packege做为中缀, 以Activity的名称(去掉Activity)做为后缀。
如: act_person_addcoustomer.xml 表示在Person模块下的AddCustomerActivity对应的Layout布局文件。
ii. ListView中的item布局文件:
以item_做为固定前缀,列表项的名称做为后缀。
如: item_lvuserlist.xml 表示在某个页面下有一个用户列表,控件名为lvUserList对应的item的layout布局文件。
iii. Dialog布局文件:
以dlg_做为固定前缀,Dialog的功能名称做为后缀。
如: dlg_hint.xml 表示什么呢?都知道吧
②drawable目录下
应该遵照如下命名规范:
i. 对于只在一个页面使用的资源,就以该界面的名称做为前缀
ii. 对于只在一个模块下多个页面使用的资源,就以该模块的名称做为前缀
iii. 对于在各个模块、各个页面都有可能使用的资源,例如上导航、下导航,以common做为前缀
3) Java类中控件对象
控件类型缩写 + 控件的逻辑名称(首字母大写),如登陆按钮,能够命名为 btnLogin。
控件 | 缩写 | 控件 | 缩写 |
LayoutView | lv | EditText | et |
RelativeView | rv | Timepicker | tp |
TextView | tv | toggleButton | tb |
Button | btn | Progress | pb |
ImageButton | img | WdbView | wv |
ImageView | iv | RantingBar | rb |
CheckBox | chk | Tab | tab |
RadioButton | rb | ListView | lv |
DatePicker | dp | MapView | mv |
4) Layout中控件对象
与Activity中对应的控件名称保持一致。
如: Button btnLogin = (Button)findViewById(R.id.btnLogin);
5) string.xml中的常量
如: loginActivity_btnLogin_text
由于这些值大多在layout中的控件上使用,因此以该常量所在的Activity名称做为前缀,后面接控件名称,再后面就能够自由发挥了。
另外一个中是使用在Java代码中情景,
若和具体Activity相关,以所在Activity名称做为前缀,和上面的同样;
若涉及和公共模块和控件相关,就以common_做为前缀。
更灵活的作法是,将其按照模块拆分为多个strings文件,只要resoures 标签下都是string标签就能够了,编译打包时会自动将同类文件进行合并。
6) 常量命名
只能包含字母和下划线_, 字母所有大写,单词之间用下划线_隔开 例如: START_TIME
2、关于编码规范
1) 须要分别类存放各类类
如:
|-src
|---com.example.demo
|---activity.others
|---activity.personcenter
|---adapter
|---db
依次还有: engine、 entity、 interfaces、 listener、ui、 utils 。。。
2) 要怎么使用findViewById 语句?
3) Layout中的常量,要在资源strings.xml中定义
4) Layout中全部控件的字体大小,都定义在dimens.xml中
5) 在Activity中,定义新的生命周期,从而将onCreate方法拆分为如下3部分:
initVariables: 初始化变量(包括Intent上的数据和Activity内部使用的变量)
initViews: 加载Layout布局文件,初始化控件
loadData: 调用MobileAPI
6) 坚持使用fastJSON自定义实体来做为MobileAPI的数据载体
7) 页面之间传值,坚持使用Intent携带序列化实体数据的方式。禁止为了省事使用全局变量进行传值的方式。
8) 为控件添加事件,使用.setOnclickListener();
9) Activity中不要嵌套内部类,尽可能都独立出来
10)全部Adapter,都放在adapter这个包中; Adapter绑定的数据,一概为ArrayList<自定义可序列化实体>; 在Adapter中使用 ViewHolder实体类。
11) 实体不要在不一样模块间共享,可是能够在同一个模块下的不一样页面之间共享。
12) 为节省内存,请使用ArrayList<自定义实体>, 而不是HashMap
13) 图片处理,请统一使用第三方组件ImageLoader 或 Fresco 来进行异步加载
14) 何时使用SharedPreference? 对于简单的配置信息,设置页面的各类开关; 而对于复杂的对象,好比说User类,仍是要存储到本地文件中为好。
15) 尽可能使用ApplicationContext 代替 Context, 不然会引发内存泄漏。 固然,也不是任何地方 ApplicationContext均可以代替Context,使用不当会致使崩溃。
16) 数据类型转换必定要进行校验。
17) 使用常量来代替枚举。 枚举的每个值只能是一个整数,而没有toString这样的方法,因此不如在类中定义一个字符串常量方便。