我想知道其他人对以下编写for循环的方式的看法:
for (int rep = numberOfReps; rep --> 0 ;) {
// do something that you simply want to repeat numberOfReps times
}
Run Code Online (Sandbox Code Playgroud)
我发明这种风格的原因是为了区别于更一般的for循环情况.当我需要简单重复的东西我只能用这个numberOfReps时间和循环体不使用的值rep,并numberofReps以任何方式.
据我所知,例如标准Java没有简单的说法"只重复N次",这就是我想出这个的原因.我甚至会说循环的主体不能continue或者break,除非在for循环的顶部明确记录,因为正如我所说的那样,整个目的是通过提出一个独特的方法使代码更容易理解用来表达简单重复的风格.
我们的想法是,如果你正在做的是不是简单的(上/一inreasing的价值下降指数,相关性breakS,continueS,等等),然后用标准的for循环.如果你在做什么是简单的重复,而另一方面,则这个独特的风格传达了"事实"(一旦你知道的风格为目的,当然).
我说"事实",因为这种风格当然可以被滥用.我的运作假设你有能干的程序员,他们的目标是让他们的代码更容易理解,而不是更难.
发表了一条评论,其中提到了for仅应用于简单迭代的原则,并while应另外使用(例如,如果循环变量在体内被修改).
如果是这种情况,那么我只是扩展这个原则来说如果它比你的简单for循环更简单(即你甚至不关心迭代索引,或者它是增加还是减少等等,你只是想重复做N次),然后使用闪烁箭头for循环结构.
多么巧合,Josh Bloch刚推文如下:
Goes-to Considered Harmful:
public static void main(String[] a) {
int i = 10;
while (i --> 0) /* i goes-to 0 */ {
System.out.println(i);
}
}
Run Code Online (Sandbox Code Playgroud)
遗憾的是没有给出任何解释,但似乎至少这个伪运算符有一个名字.之前在SO上也讨论过:这个运算符的名称是什么:" - >"?
你有与语言无关的标签,但这个问题与语言无关.如果用你的语言做了n次做事已经没有完善的习惯用法,那么这种模式会很好.
你接下来提到Java,它已经有一个成熟的习惯用于做n次:
for (int i = 0; i < numberOfReps; i++) {
// do something that you simply want to repeat numberOfReps times
}
Run Code Online (Sandbox Code Playgroud)
虽然你的模式同样有效,但却让其他人感到困惑.当我第一次看到它时,我的想法是:
除非你开发出一种比标准习惯具有显着优势的模式,否则最好坚持使用标准,这样你的编码人员就不会最终挠头了.
| 归档时间: |
|
| 查看次数: |
226 次 |
| 最近记录: |