Adriano Mone..
5
我刚刚看过WPShout 的一篇非常有趣的文章,该文章使用非常人性化的类比来邀请我们编写更智能的代码,以及为什么深层嵌套的if { .. }语句不仅会降低性能,还会降低代码的可维护性。如果逻辑具有性能意识,而没有不必要的肿的迭代检查,则最终您将获得井井有条,响应式的干净代码。
代码示例(摘自本文)
“让我们通过看两个简单的代码示例来具体化:首先是气泡样式,然后是网关样式”。
坏:气泡样式
$is_first_thing_working = true;
$is_second_thing_working = true;
$is_third_thing_working = true;
$is_fourth_thing_working = true;
if( $is_first_thing_working === true ) {
if( $is_second_thing_working === true ) {
if( $is_third_thing_working === true ) {
if( $is_fourth_thing_working === true ) {
return 'Working properly!';
}
else {
return 'Fourth thing broken.';
}
}
else {
return 'Third thing broken.';
}
}
else {
return 'Second thing broken.';
}
}
else {
return 'First thing broken.';
}
良好:网关样式
$is_first_thing_working = true;
$is_second_thing_working = true;
$is_third_thing_working = true;
$is_fourth_thing_working = true;
if( $is_first_thing_working !== true ) {
return 'First thing broken.';
}
if( $is_second_thing_working !== true ) {
return 'Second thing broken.';
}
if( $is_third_thing_working !== true ) {
return 'Third thing broken.';
}
if( $is_fourth_thing_working !== true ) {
return 'Fourth thing broken.';
}
return 'Working properly!';
范例说明
上面两个代码段之间的区别归结为一个关键区别:
bubble方法询问重要条件是否为真,并且仅在满足条件时才运行代码。
网关方法询问重要条件是否为假,如果条件为假,则立即为每个条件发出退出指令。
冒泡方法会强制嵌套,因为在进入要运行的代码之前,必须先检查“ true,true,true,true”。每个“ true”检查都是一个嵌套级别,这是您的代码必须存在的条件。
网关方法不是嵌套的:
如您所见,代码从不超过一层逻辑深度。这是因为一旦通过给定的网关,我们就可以完全忘记它。换句话说,由于我们没有在$is_first_thing_working检查后退出,因此我们自动知道其余代码$is_first_thing_working是正确的。
“这就像现实生活:如果您在历史课上坐在我旁边,我知道您是人类,是我高中的学生,等等–否则您将永远不会上过我的课地方。无需检查。”