0 ;) { // do something that you simp-6ren">
gpt4 book ai didi

java - 使用 "pseudo operator"区分简单重复和一般 for 循环

转载 作者:行者123 更新时间:2023-12-02 18:18:44 26 4
gpt4 key购买 nike

我想知道其他人对以下写作风格的看法for循环:

for (int rep = numberOfReps; rep --> 0 ;) {
// do something that you simply want to repeat numberOfReps times
}

我发明这种风格的原因是为了将其与更一般的情况 for 区分开来。循环。 我只在需要简单重复某些内容时使用此功能 numberOfReps次并且循环体不使用 rep 的值和numberofReps以任何方式

据我所知,例如标准 Java 没有一种简单的方式来表达“只需重复 N 次”,这就是我想出这个的原因。我什至会说循环体一定不能 continuebreak ,除非 for 顶部明确记录循环,因为正如我所说,整个目的是通过提出一种独特的样式来表达简单的重复,从而使代码更易于理解。

这个想法是,如果您正在做的事情简单(依赖于递增/递减索引的值,break s,continue s等),那么使用标准for环形。另一方面,如果您所做的简单的重复,那么这种独特的风格就会传达“事实”(当然,一旦您知道该风格的目的)。

我说“事实”是因为这种风格当然可能被滥用。我的假设是,您拥有称职的程序员,他们的目标是让他们的代码更容易理解,而不是更难

<小时/>

有评论暗示了 for 的原则应该只用于简单迭代,并且 while否则应该使用(例如,如果循环变量在主体中被修改)。

如果是这样的话,那么我只是扩展这个原则,说如果它比你的简单 for 更简单。循环(即你甚至不关心迭代索引,或者它是增加还是减少,等等,你只想重复做某件事N次),然后使用闪烁箭头 for相反,循环构造。

<小时/>

真是巧合,乔什·布洛赫刚刚 tweeted以下内容:

  Goes-to Considered Harmful:

public static void main(String[] a) {
int i = 10;
while (i --> 0) /* i goes-to 0 */ {
System.out.println(i);
}
}

不幸的是没有给出任何解释,但似乎至少这个伪运算符有一个名字。之前也讨论过SO:What is the name of this operator: “-->”?

最佳答案

您有与语言无关的标签,但这个问题并不是真正与语言无关的。如果还没有一个成熟的习惯用法来用您的语言执行某件事 n 次,那么这种模式就很好。

您继续提到 Java,它已经有一个行之有效的习惯用法来执行某件事 n 次:

for (int i = 0; i < numberOfReps; i++) {
// do something that you simply want to repeat numberOfReps times
}

虽然您的模式效果很好,但其他人却感到困惑。当我第一次看到它时,我的想法是:

  1. 那个奇怪的箭头是什么?
  2. 为什么那条线对我眨眼?

除非您开发出一种比标准习惯用法有显着优势的模式,否则最好坚持使用标准,这样您的其他编码人员就不会摸不着头脑。

关于java - 使用 "pseudo operator"区分简单重复和一般 for 循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2322996/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com