![]() |
1
58
通常我会立即返回输入验证。想象一下,如果你有一堆条件,你会得到一堆嵌套的
通常,一旦我通过了输入验证,我就避免多次返回,但对于验证,我会立即返回。保持清洁。 |
![]() |
2
11
我更喜欢第一个,因为这是一个警戒条件,你直接离开。但我认为两者都没有性能问题,只是这是你的偏好…两者都将直接返回执行… |
![]() |
3
9
个人选择。对于我来说,如果在方法的开头有一些可以检查的“停止”条件,我更喜欢使用“返回”模式。但前提是我能在方法的开头全部完成。 |
![]() |
4
5
我会提出相反的意见。结构化编程建议一个函数应该有一个出口点。我认为,如果使用早期返回、break语句、goto语句等,有些编译器优化是不可用的。此外,代码中更多的分支意味着很难填满CPU管道,从而可能降低性能…还有一些不尽早返回的原因,处理关于正确性的严格(即代数)推理。 |
![]() |
5
4
这要看情况而定。我确实喜欢简单函数的一个返回点,但是任何超过10-20行的返回点,为了代码清晰,我将开始分解。 |
![]() |
6
4
我更喜欢第一个,因为它是一个消除过程,在程序执行下一轮逻辑之前,您将从函数中返回。
我把它叫做我的
事实上,我一直这样做,例如,经典的例子是,我有一个期望整数的函数,我得到一个字符串,我在函数的顶部检查它是否是一个整数,不是如果它不是一个字符串或者不是另一个对象/类型,这在我的书中是愚蠢的。 这就像是哈佛大学的申请,一个先决条件:
=) |
![]() |
7
3
第一个通常是首选的,因为它减少了所需的压痕(这可能会失去控制)。没有真正的性能差异。 |
![]() |
8
3
有些人认为每个函数都应该有一个出口点。但是,当像您提到的那样的快速条件检查在开始时完成时,我发现它更清晰。它还避免了一些代码不必要地运行。 |
![]() |
9
3
我听过的一个一般规则就是早点失败,经常失败。你永远不知道什么时候一行代码指向某个超负荷的setter,它的工作方式比你想象的要困难。如果你能阻止这一行代码被执行——比如说,通过提前返回——那么你的代码将以指数形式更有效。 换句话说,如果您可以提前返回并阻止代码执行,那么在每一个回合都要执行它——特别是在您完全关心性能的时候。我想这在JS这样的东西上可能没有那么重要——我更像是一个AS3人——但同样的逻辑也适用。 如果你有很多案例,最好也找出每一个案例的失败点——在你的例子中,找出这一点是因为年龄太低而提早返回的。这将帮助其他开发人员进入并尝试调试您的代码,他们将知道事情在哪里失败以及为什么失败。 希望有帮助!:) |
![]() |
10
2
或者,因为javascript是伪装的
选择函数的习惯用法并没有那么重要,相反,如果您正在进行复杂的验证,然后有多个过程,那么将这些过程分解为单独的函数,而不是生成一个大的函数,除非它是在一个性能非常关键的代码位中。 |
![]() |
11
1
在我看来,作为一个最佳实践,我认为在控制块中一致地使用大括号更重要,即使它们的主体只是一条线。 一致的
不一致
但即使如此,这也是完全主观的。 至于什么时候打破一个函数,以及压痕的程度,这也是主观的。研究和经验表明,只在一个点(末尾)退出一个函数更容易调试、优化等;另一方面,多层次的缩进会使一个函数难以读取。 |
![]() |
12
1
如果有多个/复杂的守卫,我将使用返回。否则,在一个简单条件(在一个小函数中)的情况下,我更喜欢使用if。 |