有时您需要检查是否设置了某些内容,然后执行操作。有时会有很多这些检查,我讨厌导致的缩进。
为了最大限度地减少嵌套,我总是检查相反的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完成。我不知道这个问题是否依赖于语言。
答案 0 :(得分:0)
只要你不想退货,这对我来说就好了。 否则你可以使用one-liner if。
return (<statemen>) ? <handles true> : <handles false>;
我不确定它是否也在PHP中运行,但肯定会使用javascript。
答案 1 :(得分:0)
当您尝试最小化脚本文件中的缩进时,这通常非常有用。它通常没有问题。
唯一可能出现的问题是,如果要在函数中添加else
块。使用前一种语法,它只是简单地添加else
到它的末尾。如果您使用的是return
,那就不可能了,您必须将其转换为以前的语法。
这适用于PHP和JavaScript。它也适用于大多数具有类似语法的语言。
答案 2 :(得分:0)
在Javascript的情况下,这应该没有任何伤害,因为javascript函数以任何方式返回 undefined 。 (你写 return; 或不是)
对于PHP我不太确定,但我现在无法想象任何问题。
但是我认为这是不好的做法,因为缩进有助于了解发生了什么。 如果你在一个函数中有很多这些检查,也许你应该考虑创建更多,更小的函数而不是一个大函数,因为这也有助于阅读你的代码。
答案 3 :(得分:0)
if-elseif-else
语句一发现一个为真,就停止进行比较。每次比较都会if-if-if
。第一种是更有效率。
在您的情况下,或者在控制将离开方法(例外)的情况下,执行多个if语句和执行if-elseif-else
语句之间没有区别。
但是,无论如何使用if-elseif-else
是最佳做法。假设您更改了代码,使得您不会在每个if块中执行返回操作。然后,为了保持高效,您还必须更改为if-elseif-else
成语。从头开始if-elseif-else
可以保存您以后的修改,并且对于阅读代码的人来说更清晰。
现在编写程序并不是一项大任务,而代码的可维护性是主要要求。由于chaning世界和要求,我们需要不时更新或更改代码。因此,非常需要缩进代码以获得更好的可读性。