议论:编写高效的Android代码
讨论:编写高效的Android代码
最近看了这篇文章,je上搜了下还好几篇博客。
编写高效的Android代码:http://lcs353732057.iteye.com/blog/458511
避免建立对象
使用本地方法
使用实类比接口好
用静态方法比虚方法好 // 难道要直接用面向过程的方法实现
不用getter和setter // 封装性也不管了
将成员变量缓存到本地
避免使用枚举
....
避免使用浮点数 // 不精确也不管?
真的要这么斤斤计较吗? 个人认为真的没有必要,大家说呢
Google的技术文档有一套"better not do"的事情,大概遵守那个标准就应该可以了。
何况,程序也不是一下子就要考虑那么多的申请。
我偏向于Martin大师的那种方法,凡是有功能完成就应该交付用户使用,其他的功能
在后期慢慢加上去。然后在反馈中在不断修改。
当然,android上面想做升级也不是那么容易的,毕竟要考虑用户的感受。
所以,我想还是退出一个beta版免费,然后在考虑以上的效率和规则,发放收费的pro版。
Google的技术文档有一套"better not do"的事情,大概遵守那个标准就应该可以了。
何况,程序也不是一下子就要考虑那么多的申请。
我偏向于Martin大师的那种方法,凡是有功能完成就应该交付用户使用,其他的功能
在后期慢慢加上去。然后在反馈中在不断修改。
当然,android上面想做升级也不是那么容易的,毕竟要考虑用户的感受。
所以,我想还是退出一个beta版免费,然后在考虑以上的效率和规则,发放收费的pro版。
免费版那么慢,有几个还会买收费版。
用不着这么斤斤计较,只要代码编写时把所有逻辑层面的错误都想到就行了,例如错误处理,逻辑流程等等.
性能是可以放到最最后面再看的.
只有一个例外,就是帧数要求比较高的游戏. 做这些Android游戏的话,这些建议都是要认真考虑的.
最近看了这篇文章,je上搜了下还好几篇博客。
编写高效的Android代码:http://lcs353732057.iteye.com/blog/458511
避免建立对象
使用本地方法
使用实类比接口好
用静态方法比虚方法好 // 难道要直接用面向过程的方法实现
不用getter和setter // 封装性也不管了
将成员变量缓存到本地
避免使用枚举
....
避免使用浮点数 // 不精确也不管?
真的要这么斤斤计较吗? 个人认为真的没有必要,大家说呢
1 楼
syluke
2010-01-05
跟应用有关,对性能要求高的,或者计算量大的,就完全有必要。毕竟只是1G以下的CPU,可比不得我们的PC。
2 楼
Ahaooo
2010-01-05
这种差异只有在大量的创建对象或调用时才会显现出来。创建几十个对象都不会有感觉,但有几百上千个对象时就能感觉到拖慢了,手机资源毕竟有限。
3 楼
chandler
2010-01-06
凡是一个度而已。
4 楼
welcomyou
2010-01-06
Android跑在G1上的速度实在是让我崩溃,感觉上还不如我的E61,看来需要更强悍的硬件支持,或者JVM需要更多的优化。Java刚出来的时候不也有类似恶心的Guide :)
5 楼
BarryWei
2010-01-06
稻-草 写道
最近看了这篇文章,je上搜了下还好几篇博客。
编写高效的Android代码:http://lcs353732057.iteye.com/blog/458511
避免建立对象
使用本地方法
使用实类比接口好
用静态方法比虚方法好 // 难道要直接用面向过程的方法实现
不用getter和setter // 封装性也不管了
将成员变量缓存到本地
避免使用枚举
....
避免使用浮点数 // 不精确也不管?
真的要这么斤斤计较吗? 个人认为真的没有必要,大家说呢
编写高效的Android代码:http://lcs353732057.iteye.com/blog/458511
避免建立对象
使用本地方法
使用实类比接口好
用静态方法比虚方法好 // 难道要直接用面向过程的方法实现
不用getter和setter // 封装性也不管了
将成员变量缓存到本地
避免使用枚举
....
避免使用浮点数 // 不精确也不管?
真的要这么斤斤计较吗? 个人认为真的没有必要,大家说呢
Google的技术文档有一套"better not do"的事情,大概遵守那个标准就应该可以了。
何况,程序也不是一下子就要考虑那么多的申请。
我偏向于Martin大师的那种方法,凡是有功能完成就应该交付用户使用,其他的功能
在后期慢慢加上去。然后在反馈中在不断修改。
当然,android上面想做升级也不是那么容易的,毕竟要考虑用户的感受。
所以,我想还是退出一个beta版免费,然后在考虑以上的效率和规则,发放收费的pro版。
6 楼
welcomyou
2010-01-06
BarryWei 写道
稻-草 写道
最近看了这篇文章,je上搜了下还好几篇博客。
编写高效的Android代码:http://lcs353732057.iteye.com/blog/458511
避免建立对象
使用本地方法
使用实类比接口好
用静态方法比虚方法好 // 难道要直接用面向过程的方法实现
不用getter和setter // 封装性也不管了
将成员变量缓存到本地
避免使用枚举
....
避免使用浮点数 // 不精确也不管?
真的要这么斤斤计较吗? 个人认为真的没有必要,大家说呢
编写高效的Android代码:http://lcs353732057.iteye.com/blog/458511
避免建立对象
使用本地方法
使用实类比接口好
用静态方法比虚方法好 // 难道要直接用面向过程的方法实现
不用getter和setter // 封装性也不管了
将成员变量缓存到本地
避免使用枚举
....
避免使用浮点数 // 不精确也不管?
真的要这么斤斤计较吗? 个人认为真的没有必要,大家说呢
Google的技术文档有一套"better not do"的事情,大概遵守那个标准就应该可以了。
何况,程序也不是一下子就要考虑那么多的申请。
我偏向于Martin大师的那种方法,凡是有功能完成就应该交付用户使用,其他的功能
在后期慢慢加上去。然后在反馈中在不断修改。
当然,android上面想做升级也不是那么容易的,毕竟要考虑用户的感受。
所以,我想还是退出一个beta版免费,然后在考虑以上的效率和规则,发放收费的pro版。
免费版那么慢,有几个还会买收费版。
7 楼
mercyblitz
2010-01-07
我个人觉得,就是减少GC、多态、栈的大小所有带来的性能消耗。
8 楼
fkpwolf
2010-01-07
没那多条条框框吧,我记得的有一条是尽量把类放到一个java文件中,google io上面有专门讲性能问题的,youku上面搜搜看。
float多半是因为arm平台对这种指令支持不多,一般用double就足够了
float多半是因为arm平台对这种指令支持不多,一般用double就足够了
9 楼
topcloud
2010-01-07
尽量少使用匿名类,同时也要尽量减少类的数量。
10 楼
proper
2010-01-08
稻-草 写道
最近看了这篇文章,je上搜了下还好几篇博客。
真的要这么斤斤计较吗? 个人认为真的没有必要,大家说呢
真的要这么斤斤计较吗? 个人认为真的没有必要,大家说呢
用不着这么斤斤计较,只要代码编写时把所有逻辑层面的错误都想到就行了,例如错误处理,逻辑流程等等.
性能是可以放到最最后面再看的.
只有一个例外,就是帧数要求比较高的游戏. 做这些Android游戏的话,这些建议都是要认真考虑的.
11 楼
lordhong
2010-01-08
目前写移动应用程序是anti-OO, 就是越不OO越好, static, public能用就用... getter/setter是大大的NO, 哈哈
12 楼
BarryWei
2010-01-08
晕死,感觉好像时光倒流,到了上个世纪去了。
完了那么久的OO,结果现在写android最好不写OO,想来真的滑稽。
呵呵。
完了那么久的OO,结果现在写android最好不写OO,想来真的滑稽。
呵呵。
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的实现类的实例,而且循环条件有方法调用。
注意前提是“在做大量循环的时候”。不过这也够杯具的……
14 楼
wafj1984
2010-02-10
仁者见仁,的事情
15 楼
wafj1984
2010-02-10
如果代码经验丰富的话,不用说也能写出来
16 楼
kitcheng
2010-02-10
还好偶以前是弄标准C开发服务端程序的,对这些比较敏感。