`
稻-草
  • 浏览: 61939 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

讨论:编写高效的Android代码

阅读更多
最近看了这篇文章,je上搜了下还好几篇博客。
编写高效的Android代码:http://lcs353732057.iteye.com/blog/458511

避免建立对象
使用本地方法
使用实类比接口好
用静态方法比虚方法好         // 难道要直接用面向过程的方法实现
不用getter和setter           // 封装性也不管了
将成员变量缓存到本地
避免使用枚举
....
避免使用浮点数               // 不精确也不管?


真的要这么斤斤计较吗? 个人认为真的没有必要,大家说呢
分享到:
评论
16 楼 kitcheng 2010-02-10  
还好偶以前是弄标准C开发服务端程序的,对这些比较敏感。
15 楼 wafj1984 2010-02-10  
如果代码经验丰富的话,不用说也能写出来
14 楼 wafj1984 2010-02-10  
仁者见仁,的事情
13 楼 RednaxelaFX 2010-01-08  
要是根据Dalvik的作者,Dan Bornstein的介绍,要快的话,在做大量循环的时候,连循环的方式也有讲究:用普通for循环,
for (int i = intitializer; i >= 0; i--) // 好,倒序遍历的for循环

int limit = calculateLimit();
for (int i = 0; i < limit; i++) // 好,循环条件中只有一个比较的顺序遍历

Type[] array = getArray();
for (Type e : array) // 还行。对数组的foreach

for (int i = 0; array.length; i++) // 还行。循环条件有对数组的length的访问

for (int i = 0; i < this.var; i++) // 嗯……循环条件有对成员变量的访问

for (int i = 0; i < obj.size(); i++) // 嗯……循环条件有对成员方法的调用

Iterable<Type> list = getList();
for (Type e : list) // 不好。对Iterable<E>的foreach,至少要创建一个Iterable的实现类的实例,而且循环条件有方法调用。


注意前提是“在做大量循环的时候”。不过这也够杯具的……
12 楼 BarryWei 2010-01-08  
晕死,感觉好像时光倒流,到了上个世纪去了。
完了那么久的OO,结果现在写android最好不写OO,想来真的滑稽。
呵呵。
11 楼 lordhong 2010-01-08  
目前写移动应用程序是anti-OO, 就是越不OO越好, static, public能用就用... getter/setter是大大的NO, 哈哈
10 楼 proper 2010-01-08  
稻-草 写道
最近看了这篇文章,je上搜了下还好几篇博客。


真的要这么斤斤计较吗? 个人认为真的没有必要,大家说呢


用不着这么斤斤计较,只要代码编写时把所有逻辑层面的错误都想到就行了,例如错误处理,逻辑流程等等.
性能是可以放到最最后面再看的.


只有一个例外,就是帧数要求比较高的游戏. 做这些Android游戏的话,这些建议都是要认真考虑的.
9 楼 topcloud 2010-01-07  
尽量少使用匿名类,同时也要尽量减少类的数量。
8 楼 fkpwolf 2010-01-07  
没那多条条框框吧,我记得的有一条是尽量把类放到一个java文件中,google io上面有专门讲性能问题的,youku上面搜搜看。

float多半是因为arm平台对这种指令支持不多,一般用double就足够了
7 楼 mercyblitz 2010-01-07  
我个人觉得,就是减少GC、多态、栈的大小所有带来的性能消耗。
6 楼 welcomyou 2010-01-06  
BarryWei 写道
稻-草 写道
最近看了这篇文章,je上搜了下还好几篇博客。
编写高效的Android代码:http://lcs353732057.iteye.com/blog/458511

避免建立对象
使用本地方法
使用实类比接口好
用静态方法比虚方法好         // 难道要直接用面向过程的方法实现
不用getter和setter           // 封装性也不管了
将成员变量缓存到本地
避免使用枚举
....
避免使用浮点数               // 不精确也不管?


真的要这么斤斤计较吗? 个人认为真的没有必要,大家说呢



Google的技术文档有一套"better not do"的事情,大概遵守那个标准就应该可以了。
何况,程序也不是一下子就要考虑那么多的申请。
我偏向于Martin大师的那种方法,凡是有功能完成就应该交付用户使用,其他的功能
在后期慢慢加上去。然后在反馈中在不断修改。
当然,android上面想做升级也不是那么容易的,毕竟要考虑用户的感受。
所以,我想还是退出一个beta版免费,然后在考虑以上的效率和规则,发放收费的pro版。


免费版那么慢,有几个还会买收费版。
5 楼 BarryWei 2010-01-06  
稻-草 写道
最近看了这篇文章,je上搜了下还好几篇博客。
编写高效的Android代码:http://lcs353732057.iteye.com/blog/458511

避免建立对象
使用本地方法
使用实类比接口好
用静态方法比虚方法好         // 难道要直接用面向过程的方法实现
不用getter和setter           // 封装性也不管了
将成员变量缓存到本地
避免使用枚举
....
避免使用浮点数               // 不精确也不管?


真的要这么斤斤计较吗? 个人认为真的没有必要,大家说呢



Google的技术文档有一套"better not do"的事情,大概遵守那个标准就应该可以了。
何况,程序也不是一下子就要考虑那么多的申请。
我偏向于Martin大师的那种方法,凡是有功能完成就应该交付用户使用,其他的功能
在后期慢慢加上去。然后在反馈中在不断修改。
当然,android上面想做升级也不是那么容易的,毕竟要考虑用户的感受。
所以,我想还是退出一个beta版免费,然后在考虑以上的效率和规则,发放收费的pro版。
4 楼 welcomyou 2010-01-06  
Android跑在G1上的速度实在是让我崩溃,感觉上还不如我的E61,看来需要更强悍的硬件支持,或者JVM需要更多的优化。Java刚出来的时候不也有类似恶心的Guide :)
3 楼 chandler 2010-01-06  
凡是一个度而已。
2 楼 Ahaooo 2010-01-05  
这种差异只有在大量的创建对象或调用时才会显现出来。创建几十个对象都不会有感觉,但有几百上千个对象时就能感觉到拖慢了,手机资源毕竟有限。
1 楼 syluke 2010-01-05  
跟应用有关,对性能要求高的,或者计算量大的,就完全有必要。毕竟只是1G以下的CPU,可比不得我们的PC。

相关推荐

Global site tag (gtag.js) - Google Analytics