首页 > 代码库 > Konwledge

Konwledge

Android编码注意事项

 

 

 

目录

                                                                                                一、代码整洁度……………………………………………………………………………2

                                                                                                二、变量常量………………………………………………………………………………2

                                                                                                三、配置文本存储…………………………………………………………………………2

                                                                                                四、数据库编码……………………………………………………………………………2

                                                                                                五、异常处理……………………………………………………………………………....3

                                                                                                六、代码细粒度设计………………………………………………………………………4

                                                                                                七、其他 ...…………………………………………………………………………………5

一、             代码整洁度

  1. 代码整洁度,对代码可读性的保证,不要出现调试代码。
  2. 对每个分号的代码,尽量放在一行,整行要尽量保证;如果是相同类型的变量,尽量放在同一分号内。

二、             变量常量

  1. 命名:关于变量常量的命名,也就是说编码规范。在编码这块,变量名要看其名,知其意;别弄个变量名用s来命名。

 

如果是全局变量,最好别这么写;如果是局部变量,代码比较少,到还可以这么写。

 

另外,常量名大家会用大写带下划线的命名方式如:

 

1 public static final String PREFERENCES_USER_CODE = "UserCode";
  1. 带final修饰静态变量
  2. 静态代码块
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.       空指针

在使用一个对象的时候,首先一件事情是要考虑这个对象是否是空指针。

  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里面处理

 

六、             代码细粒度设计

  1. 出于重用的目的,像类和xml的设计,为尽可能重用,所以采用细粒度的设计模式
  2. 尽可能少的使用实体类,在开发apk的时候,如果项目比较庞大的话,这样会增加apk的体积。建议使用Map对数据进行封装。
  3. 尽可能少的使用接口

 

七、 其他

  1. 关于项目上有感叹号的问题:
    1. 查看项目的sdk没没有导入
    2. 项目有缓存导致的问题(clean)
  2. 关于项目上有红×的问题
    1. 项目的java代码或者xml的代码有错误
    2. 资源文件命名的问题,一般资源文件都不能出现大写,且不能以数字开头
    3. jar包有重复导入
    4. 导入的jar包或sdk生成的引入的Libraries 在Order and Export中的勾选问题(在百度sdk中可能会发生)
    5. 缓存问题

 

  1. 关于R文件不能生成的问题是因为项目中有错误
  2. 关于百度地图

A.其实百度在Android中,一般常用的有百度地图API和百度定位API

B.  首先要注意AndroidManifest.xml相关配置(如果是定位需要定义一个service)和key的问题

  1. 关于连接的问题

A.连接手机或平板的时候,如果是主机,最好是用后面的USB接口。

B. 当连接手机或平板的时候,如果提示Could not open: AVD-API19,并且DDMS里面的 Devices。

C. 关于联调的话,市面上有91,、360、金山、豌豆荚等等都可以下载驱动。

D. 

Konwledge