【发布时间】:2014-07-17 23:13:36
【问题描述】:
有时您需要检查是否设置了某些内容,然后执行操作。有时有很多这样的检查,我讨厌导致的压痕。
为了尽量减少嵌套,我总是检查相反的和return,然后继续相同的缩进。
比如下面这样说
if (user.isOwner)
{
// Do some operation
// Set a value $accepted to true or false
if ($accepted)
{
// Do more operation
// And so on
}
}
相反,我把上面的代码写成
if ( ! user.isOwner) return;
// Do some operation
// Set a value $accepted to true or false
if ( ! $accepted) return;
// Do more operation
// And so on
这会导致任何问题吗?上面的函数在调用时不会返回任何结果(即我调用的是doThisForMe())。我在这里的编码是用 PHP 和 Javascript 完成的。我不知道这个问题是否与语言有关。
【问题讨论】:
-
这里没问题,你也可以
return True或任何你想要的值。但当然,函数内部的任何内容都会被“跳过”。只要语言允许函数有多个退出点,这与语言无关。 -
javascript 是客户端,请记住这一点 - 如果您的 javascript 旨在确保安全(例如,如果该人是所有者),只需知道它不会做任何可以做的事情'不要被开发技能最低的人绕过。
-
@OllieFord,好的,太好了!很高兴知道它不会造成任何问题。
-
@skrilled,好点子!根本没想过这个!
-
这看起来可以使用 Option/Maybe 模式进行抽象。这样您就可以使用组合,而不是过程代码。
标签: javascript php if-statement