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.

时间: 2024-10-26 19:59:34

Konwledge的相关文章

welcome

what is this school about? 1.it is about applications of computer science,tools and technologies and staticstics to scientific analysis. 2.it is not about computer science proper and high performance computing. transformation and synergy(协同) 1.all sc

Lecture1 Features of Academic Writing

I.Academic Writing 1.Definition for communicating scientific konwledge;addressed to scholars and other knowlegeable readers who are familiar with that branch of knowledge;in terms of discussing an academic problem. 2.Characteristic accuracy,organizat

Delegates, Events and Lambda Expression

The content and code of this article is referenced from book Pro C#5.0 and the .NET 4.5 Framework by Apress. The intention of the writing is to review the konwledge and gain better understanding of the .net framework.    Up to this point, most of the

设计模式从零到一之六大原则

一.单一职责原则(Single Responsibility Principe)简称是SRP. 单一职责原则的好处: 1.类的复杂性降低,实现什么职责都有清晰明确的定义: 2.可读性提高,复杂性降低,那当然可读性就提高了: 3.可维护性提高,可读性提高,那当然就更容易维护了: 4.变更引起的危险降低,变更是必不可少的,如果接口的单一职责做得好,一个接口修改只对相应的实现类有影响,对其他的接口无影响,这对系统的扩展性,维护性都有非常大的帮助. 单一职责原则提出了一个编写程序的标准,用"职责&quo

Chapter 15 - Multithread programming

The content and code of this article is referenced from book Pro C#5.0 and the .NET 4.5 Framework by Apress. The intention of the writing is to review the konwledge and gain better understanding of the .net framework.  1. Process/AppDomain/Context/Th

Advanced C# language features

The content and code of this article is referenced from book Pro C#5.0 and the .NET 4.5 Framework by Apress. The intention of the writing is to review the konwledge and gain better understanding of the .net framework.  1. Indexer method As a develope

读书笔记-程序员修炼之道-注重实效的哲学(三)

你的知识资产 知识资产 经营你的资产 目标与建议 学习的机会 批判的思考 网络上请教别人的礼节与教养 你的知识资产 知识上的投资总能得到最好的回报. ---本杰明-富兰克林 我们的知识和经验是我们最重要的职业财富. 遗憾的是,它们是有时效的资产.随着新技术.语言及环境的出现.你的知识会变得过时.不断变化的市场驱动力也许会使你的知识和经验变得陈旧或者无关紧要. 这种事情可能会很快的发生. 我们知识的价值降低,对导致我们的价值也在降低.我们要阻止这样的事情,绝对不让它发生. 知识资产 程序员所知道的

Knowledge Tracing -- 基于贝叶斯的学生知识点追踪(BKT)

目前,教育领域通过引入人工智能的技术,使得在线的教学系统成为了智能教学系统(ITS),ITS不同与以往的MOOC形式的课程.ITS能够个性化的为学生制定有效的 学习路径,通过根据学生的答题情况追踪学生当前的一个知识点掌握状况,从而可以做到因材施教. 在智能教学系统中,当前有使用以下三种模型对学生的知识点掌握状况进行一个追踪判断:     IRT(Item response theory)  项目反应理论     BKT(Bayesin knowledge tracing) 基于贝叶斯网络的学生知

使用mint-ui开发项目的一些所得

使用mint-ui开发项目的一些所得 Mint-ui: 1.Cell 开发过程中,有时需要修改mt-cell自带的icon和value的标签样式,这时我们可以在<mt-cell></mt-cell>内新添如下标签进行改写: <si-cell class="user-cell item-cell" title="当前产品" to="/selectproduct" is-link> <i class=&quo