fic*_*ion 10 java checkstyle jls
我最近为Eclipse安装了Checkstyle插件,并且个人认为它非常棒.但它给我的一个警告有点模糊.确切的警告是" 不允许使用".它是关于某些行中的后缀++
++
for(int i = 0; i < SOMETHING; i++)
Run Code Online (Sandbox Code Playgroud)
好吧,我知道这foreach
是迭代的更好构造,但它无法在任何地方应用,有时老学校++
是唯一的选择.
当我将行更改为
for(int i = 0; i < SOMETHING; ++i)
Run Code Online (Sandbox Code Playgroud)
警告消失了.我知道之间的区别i++
,并++i
和这一点我的生活我认为他们在标准的可互换for
建设.但Checkstyle认为i++
有害(或容易出错).
问题:为什么前缀增量优于for
构造中的后缀增量?或者...... Checkstyle错了吗?
Bla*_*iev 12
只有在修改前需要旧值的表达式中使用后缀增量才有意义.在无效上下文中,该值被丢弃(就像在for
循环中一样),保存旧值是没有意义的.
换一种说法:
// makes sense because you need the old value to subscript the array
stack[top++] = x;
// in a void context, the old value is discarded
top++;
Run Code Online (Sandbox Code Playgroud)
特别是在C++中,这两个运算符都可以重载,并且后缀的实现可能效率低,因为需要返回旧值 - 它通常涉及复制旧对象以符合后缀运算符的原始语义.
对于原始类型,任何体面的编译器都会为这两种情况生成相同的代码,但第二种情况从语言的语义角度来看更好.
归档时间: |
|
查看次数: |
1502 次 |
最近记录: |