Android提升篇系列:Android项目代码优化实践
Android开发中,不同的开发团队,不同的开发人员,在实际编码中会有一些不同的地方。
但是,具有一定的更普适性的编码习惯,无疑还是相当重要的。本文主要罗列项目中常见的一些编码片段,并给出相关建议。
1.数组标识符应该紧跟在数组类型后面,而非变量后面
如
int data[] = new int[1024]; 建议写成
int[] data = new int[1024];
2.if中的条件判断在特定情况下需要合并
如
if(lastestTime > recordTime){
if(isLogin()){
//...
}
} 建议写成
if(lastestTime > recordTime && isLogin()){
//...
}
3.if语句块在特定情况下可以简写
如
if(isExistAccount()){
return true;
} else{
return false;
} 建议写成
return isExistAccount();
4.布尔型变量没必要再和true或false进行比较
如
int status = hasSubcribe == true ? 1 : 0; 建议写成
int status = hasSubcribe ? 1 : 0;
5.inteface中方法没有必要使用public修饰,常量没有必要使用public static修饰
如
public interface HostCallBack(){
public static int MODE_INSERT = 1;
public static int MODE_ALL =2; public void clear();
} 建议写成
public interface HostCallBack(){
int MODE_INSERT = 1;
int MODE_ALL =2; void clear();
}
6.重写equals方法需要遵守重写hashCode方法约定
如
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false; AccountVo accountVo = (AccountVo) o; if (id != accountVo.id) return false;
return name.equals(accountVo.name); } 建议增加上重写hashCode方法
@Override
public int hashCode() {
int result = (int) (id ^ (id >>> 32));
result = 31 * result + name.hashCode();
return result;
}
7.catch中不要再对Exception类型做判断
如
try{ //... }catch(Exception e){
if(e instanceOf IOException){ //... } else{ //... }
} 建议写成
try{ //... }catch(IOException e){ //... }catch(Exception e){ //... }
8.方法体不宜太长,可以根据具体情况适当将方法体内部部分逻辑拆解出来
如
public void fixRecord(int rid, String name){
//...
//方法体太长....
//...
}
建议写成
public void fixRecord(int rid, String name){
//...
updateRecord(int rid);
//...
}
private void updateRecord(int rid){
//...
}
9.xml元素没有内容应该采用简写形式
如
<item name="desc_tv" type="id"></item> 建议写成
<item name="desc_tv" type="id" />
10.switch语句块需要加上break
如
switch (retCode){
case 3
// ...
break;
case 1:
// ...
break;
case 2:
// ...
break;
} 建议写成
switch (retCode){
case 3
// ...
break;
case 1:
// ...
break;
case 2:
// ...
break;
default:
// ...
break;
}
11.变量名含义须具有唯一性
如:
String password = AppAccountManager.getCurrentPassword();
password = EncryptUtil.decrypt(password); 建议写成
String password = AppAccountManager.getCurrentPassword();
String decryptPassword = EncryptUtil.decrypt(password);
12.无效的import需要删除
如果没有用到需要删除干净
13.注释不要与代码放在同一行
如:
private int mState = STATE_ADD; // add record statef 建议写成
// add record statef
private int mState = STATE_ADD;
14.不要犯单词拼写错误
项目中发现不少英文单词拼写错误,其实,AS默认情况下对疑似拼写错误的单词都会有波浪线等提示。
总之,在编码过程中,一些推荐的更标准的写法或风格总是没有错的,并且,一定的代码洁癖等也是一种很好的编码态度和习惯。
Android提升篇系列:Android项目代码优化实践的更多相关文章
- Android提升篇系列:Activity recreate(Activity 重新创建/自我恢复)机制(一)
注:本文中的recreate是指当内存不足时,Activity被回收,但再次来到此Activity时,系统重新恢复的过程.例如:当Activity A到Activity B时,如果内存不足,A被回收, ...
- Android提升篇系列:adb无法识别MX5等特殊机型
发现自己Ubuntu系统adb无法识别魅族 mx5机型.操作具体如下(其他机型依然适用): 一.Ubuntu环境 1.查看自己当前设备的idVendor lsusb命令直接查看当前usb设别列表,找到 ...
- Android总结篇系列:Activity中几个主要函数详解
Activity作为Android系统中四大基本组件之一,包含大量的与其他的各大组件.intent.widget以及系统各项服务等之间的交互的函数.在此,本文主要选取实际项目开发中常用的,但完全理解又 ...
- 【转】Android总结篇系列:Activity Intent Flags及Task相关属性
[转]Android总结篇系列:Activity Intent Flags及Task相关属性 同上文一样,本文主要引用自网上现有博文,并加上一些自己的理解,在此感谢原作者. 原文地址: http:// ...
- 【转】Android总结篇系列:Activity生命周期
[转]Android总结篇系列:Activity生命周期 Android官方文档和其他不少资料都对Activity生命周期进行了详细介绍,在结合资料和项目开发过程中遇到的问题,本文将对Activity ...
- 【转】Android总结篇系列:Activity启动模式(lauchMode)
[转]Android总结篇系列:Activity启动模式(lauchMode) 本来想针对Activity中的启动模式写篇文章的,后来网上发现有人已经总结的相当好了,在此直接引用过来,并加上自己的一些 ...
- Android总结篇系列:Android Service
Service通常总是称之为“后台服务”,其中“后台”一词是相对于前台而言的,具体是指其本身的运行并不依赖于用户可视的UI界面,因此,从实际业务需求上来理解,Service的适用场景应该具备以下条件: ...
- Android 快速开发系列 ORMLite 框架最佳实践
比较靠谱的Helper的写法: 1.DatabaseHelper package com.zhy.zhy_ormlite.db; import java.sql.SQLException; impor ...
- Android总结篇系列:Activity Intent Flags及Task相关属性
同上文一样,本文主要引用自网上现有博文,并加上一些自己的理解,在此感谢原作者. 原文地址: http://blog.csdn.net/liuhe688/article/details/6761337 ...
随机推荐
- 部署到IIS报错:HTTP错误500.19,错误代码0x80070021
查看网上IIS7出现这个问题解决办法是: 因为 IIS 7 采用了更安全的 web.config 管理机制,默认情况下会锁住配置项不允许更改.运行命令行 %windir%\system32\inets ...
- seajs模块化开发
seajs是一个起辅助作用的库,所以它可以更方便开发,而它可以解决以下问题: 1.命名问题,就是冲突 2.性能问题,就是只要一个功能,但却使用一个大插件中的一个小功能,所以要手动拆分出这个功能 3.j ...
- ASP.NET MVC图片管理(上传,预览与显示)
先看看效果(下面gif动画制作有点大,5.71MB): 题外话:上面选择图片来源于Insus.NET的新浪微博:http://weibo.com/104325017 也是昨晚(2015-07-03)I ...
- Cocos2d-x 3.2 学习笔记(十)Joystick 搖杆控件
最近想做格鬥遊戲,那麼就要有搖杆控件,不想去看別人的代碼就自己寫了個搖杆控件,實現起來很簡單. 話不多說,看代碼: #ifndef __Joystick__ #define __Joystick__ ...
- SQL Server优化器特性-动态检索
前段时间我写的文章SQL Server 隐式转换引发的躺枪死锁 中有的朋友评论回复说在SQL2008R2测试时并未出现死锁,自己一测果然如此,因此给大家带来的疑惑表示抱歉,这里我就解释下其原因. 回顾 ...
- Javascript定时器(二)——setTimeout与setInterval
一.解释说明 1.概述 setTimeout:在指定的延迟时间之后调用一个函数或者执行一个代码片段 setInterval:周期性地调用一个函数(function)或者执行一段代码. 2.语法 set ...
- Spring MVC异常处理详解
Spring MVC中异常处理的类体系结构 下图中,我画出了Spring MVC中,跟异常处理相关的主要类和接口. 在Spring MVC中,所有用于处理在请求映射和请求处理过程中抛出的异常的类,都要 ...
- 【知识积累】DES算法之C#加密&Java解密
一.前言 在项目需要添加安全模块,客户端调用服务端发布的service必须要经过验证,加密算法采用DES,客户端采用C#进行加密,服务端使用Java进行解密.废话不多说,直接上代码. 二.客户端 客户 ...
- 【转】 制作Android Demo GIF:程序演示效果GIF图录制
在平时写博客或者分享自己写的程序效果的时候经常需要做成GIF图,以下就是介绍几种常用的GIF录制方法: 一.录制工具 1.(生成动画的工具:Ulead GIF Animator),可以讲单独的图片生成 ...
- a[href^=""]的解释
a[href^="绝对路径"]这个算一种属性选择器,在这里是用来选择链接属性为“绝对路径”的a标签,其中的^其实是"以什么为开始"(begin with)的意思 ...