关于一段Java代码执行效率的纳闷
关于一段Java代码执行效率的疑惑
A:
B:
A与B执行效率差别大么?
-----------------------------------------------------------
PS:今天经理跑来跟我说你这程序不能像A这么写,要写成B这样的,这效率到底差别能有大呢?
------解决思路----------------------
我觉的没有啥区别 你们经理脑袋有泡
不知道其他人有没有不同看法
------解决思路----------------------
我觉得效率上也没什么太大区别,编程风格问题吧
------解决思路----------------------
几乎没有差别,而且你的方式A 可读性更强。
------解决思路----------------------
这不光是效率不效率的问题,是个逻辑问题,A的写法把这个test当作一个运行条件,B是把他的!当作异常;先处理
B是明显好于A的,你这个例子可能还显示不太出来,但如果像这种test有很多时,照A的写法很容易得到类似于
但用B的写法却是
先处理异常情况,再做主线逻辑处理。无论在代码可读性还是逻辑上都要更好。即便真的要讨论效率问题,A压栈操作要比B多很多,越复杂的情况越能体现出来.
------解决思路----------------------
楼上这位说得好啊,学习了。看来我们还没有达到这个水平啊。
------解决思路----------------------
首先,对于效率来说都一样
第二种符合处理的一般习惯,一般都是先进行数据校验或非法操作的处理,然后在进行业务处理,这种东西你做过一个全程项目很容易理解,到后来你会把类似第一种的写法全部改写成第二种,增加可读性和可扩展性。相信我
------解决思路----------------------
感觉这跟效率没什么关系吧,就是可读性的问题
------解决思路----------------------
实际上第一种的效率要略高一些。。。。。。
但是从维护的角度,4楼举例,6楼说理,说服力应该足够强了。
------解决思路----------------------
为何第一种效率高?
------解决思路----------------------
1.第二种快,!=运算一般实现是在==运算上取反。
2.条件判断一般优先用==,容易理解,相比!=。
3.异常条件一般优先处理,代码条理清晰。
------解决思路----------------------
和效率无关, 但你们经理说的是对的, 如四楼所说, 判断条件过多就会出现if嵌套深度过大, 一些编码规范严格的项目中这样的代码是不合格的
------解决思路----------------------
1、我习惯B
2、这种代码跟效率没有太大的关系
------解决思路----------------------
《代码大全》里明确的解释过:B更容易阅读和维护。
A:
a(String[] args){
if(args != null){
for(String arg : args){
system.out.println(arg);
}
}
}
B:
b(String[] args){
if(args == null){
return;
}
for(String arg : args){
system.out.println(arg);
}
}
A与B执行效率差别大么?
-----------------------------------------------------------
PS:今天经理跑来跟我说你这程序不能像A这么写,要写成B这样的,这效率到底差别能有大呢?
------解决思路----------------------
我觉的没有啥区别 你们经理脑袋有泡
不知道其他人有没有不同看法
------解决思路----------------------
我觉得效率上也没什么太大区别,编程风格问题吧
------解决思路----------------------
几乎没有差别,而且你的方式A 可读性更强。
------解决思路----------------------
这不光是效率不效率的问题,是个逻辑问题,A的写法把这个test当作一个运行条件,B是把他的!当作异常;先处理
B是明显好于A的,你这个例子可能还显示不太出来,但如果像这种test有很多时,照A的写法很容易得到类似于
if (!...) {
if (!...) {
if (!...) {
if (!...) {
...
}
}
}
}
但用B的写法却是
if(...) {
throw exception
}
if(...) {
throw exception
}
if(...) {
throw exception
}
if(...) {
throw exception
}
...
先处理异常情况,再做主线逻辑处理。无论在代码可读性还是逻辑上都要更好。即便真的要讨论效率问题,A压栈操作要比B多很多,越复杂的情况越能体现出来.
------解决思路----------------------
楼上这位说得好啊,学习了。看来我们还没有达到这个水平啊。
------解决思路----------------------
首先,对于效率来说都一样
第二种符合处理的一般习惯,一般都是先进行数据校验或非法操作的处理,然后在进行业务处理,这种东西你做过一个全程项目很容易理解,到后来你会把类似第一种的写法全部改写成第二种,增加可读性和可扩展性。相信我
------解决思路----------------------
感觉这跟效率没什么关系吧,就是可读性的问题
------解决思路----------------------
实际上第一种的效率要略高一些。。。。。。
但是从维护的角度,4楼举例,6楼说理,说服力应该足够强了。
------解决思路----------------------
为何第一种效率高?
------解决思路----------------------
1.第二种快,!=运算一般实现是在==运算上取反。
2.条件判断一般优先用==,容易理解,相比!=。
3.异常条件一般优先处理,代码条理清晰。
------解决思路----------------------
和效率无关, 但你们经理说的是对的, 如四楼所说, 判断条件过多就会出现if嵌套深度过大, 一些编码规范严格的项目中这样的代码是不合格的
------解决思路----------------------
1、我习惯B
2、这种代码跟效率没有太大的关系
------解决思路----------------------
《代码大全》里明确的解释过:B更容易阅读和维护。