锁定老帖子 主题:代码难道不是这么写的?
该帖已经被评为良好帖
|
|
---|---|
作者 | 正文 |
发表时间:2010-07-28
想说的是你没有错,评审官其实也没有错,写法虽然不会带来额外的内存消耗但是要从一个好的coding习惯来说,评审官是对的。
|
|
返回顶楼 | |
发表时间:2010-07-28
代码要本身表达的是对同一个变量重复赋值,但做成重复定义总是不好的。看来JAVA胸怀还是挺大的,不像别的好些强类型语言根本就不会通过。
|
|
返回顶楼 | |
发表时间:2010-07-28
骂你,你还觉得冤枉?如果循环很多,像这样的语句 i<arr.len 替不是很耗资源?
是不是应该放在循环之外。写代码之前难道公司不给你们培训编码规范吗? |
|
返回顶楼 | |
发表时间:2010-07-28
又一个长贴。
首先,且不论performance如何——你那个评审P都不懂——你的代码减小变量作用域,也就是减少了出bug的风险。这个最重要。 在这个运行效率换取开发效率的年代,那些芝麻绿豆大小的优化,起得了什么作用?不如在设计、构架的时候,多花点脑细胞,纠缠于这种战术问题的战役指挥官,通常都只能打败仗 |
|
返回顶楼 | |
发表时间:2010-07-28
leonwoo 写道 骂你,你还觉得冤枉?如果循环很多,像这样的语句 i<arr.len 替不是很耗资源?
是不是应该放在循环之外。写代码之前难道公司不给你们培训编码规范吗? 请详细解释一下为什么很耗资源, |
|
返回顶楼 | |
发表时间:2010-07-28
leonwoo 写道 骂你,你还觉得冤枉?如果循环很多,像这样的语句 i<arr.len 替不是很耗资源?
是不是应该放在循环之外。写代码之前难道公司不给你们培训编码规范吗? 仔细看楼主写的: XTU_xiaoxin 写道 骂我内容:说我会不会编程,把变量写在for循环里面,说如果遍历多次的话会占用大量的堆内存。 要我改成如下形式: A a = null; for(int i = 0;i<arr.len;i++) { a = arr[i]; System.out.println(s); } |
|
返回顶楼 | |
发表时间:2010-07-28
JackAndroid 写道 完全是在扯淡,重复的只是申明的引用,而且只是占用栈,根本不会占用堆空间。更何况jvm是做过优化的,完全可以清楚
这个说法是对的 |
|
返回顶楼 | |
发表时间:2010-07-28
LZ你代码肯定更好,你们的评审以前是估计是做c的,满脑子的堆栈,java是面向对象的,理论上根本没有堆栈(要谈jvm底层的除外)
LZ的A a = arr[i]; 写在for循环里,更符合面向对象的思维,况且a只在for循环内使用,更加不用定义到外面 总结就是,过程vs对象,过程以经验的优势在那一刻击败的对象 |
|
返回顶楼 | |
发表时间:2010-07-28
|
|
返回顶楼 | |
发表时间:2010-07-28
XTU_xiaoxin 写道 今天代码评审时,评审官看见如下代码,把我是一顿好骂(代码是我写的),大致形式如下:
for(int i = 0;i<arr.len;i++) { A a = arr[i]; System.out.println(s); } 骂我内容:说我会不会编程,把变量写在for循环里面,说如果遍历多次的话会占用大量的堆内存。 要我改成如下形式: A a = null; for(int i = 0;i<arr.len;i++) { a = arr[i]; System.out.println(s); } 其实我也不知道他说的对不对,但他让我改的那种方式是绝对没问题的。但我觉得如果变量写在for循环里面,如果没被用到,应该会被垃圾回收的,不会占用太多堆内存吧。 其实,我看了一些大牛写的代码,他们都把变量写在for里面,只是说不要在for里new对象就行了,我很纳闷。。。。。 从这个代码片段上看不出什么问题,因为对象a并未被使用,而楼主又要创建出arr.len个数量的a对象,不知道用意是什么,其实从这段代码看的话,arr.len在10万以内是不会有什么问题的,关键他创建这些对象的作用是什么 |
|
返回顶楼 | |