Android编码注意事项
目录
一、代码整洁度……………………………………………………………………………2
二、变量常量………………………………………………………………………………2
三、配置文本存储…………………………………………………………………………2
四、数据库编码……………………………………………………………………………2
五、异常处理……………………………………………………………………………....3
六、代码细粒度设计………………………………………………………………………4
七、其他 ...…………………………………………………………………………………5
一、 代码整洁度
- 代码整洁度,对代码可读性的保证,不要出现调试代码。
- 对每个分号的代码,尽量放在一行,整行要尽量保证;如果是相同类型的变量,尽量放在同一分号内。
二、 变量常量
- 命名:关于变量常量的命名,也就是说编码规范。在编码这块,变量名要看其名,知其意;别弄个变量名用s来命名。
如果是全局变量,最好别这么写;如果是局部变量,代码比较少,到还可以这么写。
另外,常量名大家会用大写带下划线的命名方式如:
1 public static final String PREFERENCES_USER_CODE = "UserCode";
- 带final修饰静态变量
- 静态代码块
final修饰的对象或者变量,在内存中是不可修改,如果是对象则不可继承该对象。 static修饰的对象或者变量,在内存有且只有1个备份,可以修改。但是会被回收。
在这个类第一次被调用或实例化的时候就会被执行。
静态代码块只会执行一次,一般会用来初始化一些值,并且在所有对象中全局共享。
三、
配置文本存储
配置文本一般可以通过SharedPreferences或数据库
四、
数据库编码
最需要注意的就是游标的关闭和数据库访问对象的关闭。
1 public boolean delAll(String tabName) { 2 try { 3 dbHelper.del(tabName); 4 } catch (Exception e) { 5 return false; 6 } finally { 7 if (dbHelper != null) 8 dbHelper.close(); 9 } 10 return true; 11 }
一般都会用finally来关闭打开的数据库访问对象和游标对象,另外把不再使用的对象置为空,该对象很快会被虚拟机回收。
五、 异常处理(重点)
1. 空指针
在使用一个对象的时候,首先一件事情是要考虑这个对象是否是空指针。
- equals
if("1".equals(mData.get("Selected"))) {}
if(mData.get("Selected").equals("1")) {}
这2种写法的区别在于后面的写法可能会报空指针。
2.==
if(null != mSectionList) {}
这里只是提一下有些人喜欢把null放在前面
3.for
ArrayList<HashMap<String, String>> mList = new DBService(mContext).getResultsFile(mData.get("DamageID"));
if(null != mList && mList.size() > 0) {
for(final HashMap<String, String> map : mList) {}
}
在使用for循环的时候,必须对列表进行判断是否为空。切记
另外提一点就是在使用for循环的时候
for(int i = 0, len = jsonAry.length(); i < len; i ++) {}
可以这么写是因为后面一种每循环一次就会计算一次数组的长度,如果数据量大性能立马能体现出来
for(int i = 0; i < jsonAry.length(); i ++) {}
4.mSegmentJson.toString()
在使用一个对象时,如果当你无法确定那个对象不能为空,必须先判断下是否为空。
2. 数组下标越界
当你用数组的时候,首先要考虑的问题是下标越界问题,所以必须控制此异常的出现。
主要解决办法:判断数组长度,如果在范围内,才可以用
3.
解析异常
parseInt
(String s)
parseDouble
(String s)
parseFloat
(String s)
主要解决办法:判断是否可以解析,或者直接try然后在catch里面处理
六、 代码细粒度设计
- 出于重用的目的,像类和xml的设计,为尽可能重用,所以采用细粒度的设计模式
- 尽可能少的使用实体类,在开发apk的时候,如果项目比较庞大的话,这样会增加apk的体积。建议使用Map对数据进行封装。
- 尽可能少的使用接口
七、 其他
- 关于项目上有感叹号的问题:
- 查看项目的sdk没没有导入
- 项目有缓存导致的问题(clean)
- 关于项目上有红×的问题
- 项目的java代码或者xml的代码有错误
- 资源文件命名的问题,一般资源文件都不能出现大写,且不能以数字开头
- jar包有重复导入
- 导入的jar包或sdk生成的引入的Libraries 在Order and Export中的勾选问题(在百度sdk中可能会发生)
- 缓存问题
- 关于R文件不能生成的问题是因为项目中有错误
- 关于百度地图
A.其实百度在Android中,一般常用的有百度地图API和百度定位API
B. 首先要注意AndroidManifest.xml相关配置(如果是定位需要定义一个service)和key的问题
- 关于连接的问题
A.连接手机或平板的时候,如果是主机,最好是用后面的USB接口。
B. 当连接手机或平板的时候,如果提示Could not open: AVD-API19,并且DDMS里面的 Devices。
C. 关于联调的话,市面上有91,、360、金山、豌豆荚等等都可以下载驱动。
D.