大约六个月前,我开始使用三元运算符逻辑,并注意到自己一直在使用简写 if/else 逻辑。它缩短了我的代码,缩短了编写代码的时间,让我在小胡子面前看起来更聪明。
多亏了 Google Analytics,我发现我收到了很多来自程序员的页面浏览,他们正在寻找有关“速记 if/else”、“三元逻辑”和“速记逻辑 php”的信息。我为“?:”新手制定了一些指南,让学习速记 if/else 变得尽可能快速和简单。
以If/Else开头,然后转为三进制
从简单的 if/else 代码中的表达式开始,然后小心地将每个 if/else 转换为更短的三元语句。采取额外的步骤为每个表达式创建变量可能会有所帮助。
/* start with if / else ... */ if($language == 'php') { $dynamic = true; } else { $dynamic = false; } /* ... then convert */ $dynamic = ($language == 'php' ? true : false); //or 1 : 0 /* optional code shortening */ $dynamic = $language == 'php';
使用括号对逻辑进行分组
将表达式放在括号中是保持代码井井有条以供日后维护的好方法。
//viva grouping! $age_code = ($age > 10 ? ($age > 20 ? ($age > 30 ? 'senior' : 'adult') : 'teen') : 'youngster'); //the following isn't as fun to read $age_code = $age > 10 ? $age > 20 ? $age > 30 ? 'senior' : 'adult' : 'teen' : 'youngster';
对部分表达式使用“中间”变量
上面的 10/20/30 代码很粗糙,很难维护。使用变量可能有助于简化事情。
//better? $over_30 = ($age > 30 ? 'senior' : 'adult'); $over_20 = ($age > 20 ? $over_30 : 'teen'); $age_code = ($age > 10 ? $over_20 : 'youngster');
使用 True/False 布尔值,而不仅仅是表达式
您可能知道,您可以只使用表达式作为返回值。如果您认为这会在学习过程中伤害您,请明确返回 true 或 false。
/* explicit */ $can_drive = ($age >= 16 ? true : false); /* implicit, just the expression */ $can_drive = $age >= 16;
知道何时不使用三元逻辑
如果逻辑中有很多嵌套的 if/else 语句,速记表达式可能不是最好的选择。例如,以下代码片段返回给定年份是否为闰年:
$is_leap_year = ((($year % 4) == 0) && ((($year % 100) != 0) || (($year %400) == 0)));
以上代码适用于三元逻辑,因为它不必经常更新——闰年“计算”始终相同。如果您有需要经常更新的代码,简写 if/else 可能不是最佳选择。
测试!测试!测试!
与任何类型的编程一样,尽早并经常测试!