回答
如果你想提高可读性而已,那么你可以随时分手if语句里面的表达式:
$exp1 = is_array($var) && isset($var['key']);
$exp2 = is_object($var) && isset($var->key);
$exp3 = substr($string, 0, 4) == 'foo';
$exp4 = ($exp1 || $exp2) && $exp3;
if ($exp4) {}
,而不是
if (((is_array($var) && isset($var['key'])) || (is_object($var) && isset($var->key))) && substr($string, 0, 4) == 'foo') {}
显然,这是简化的例子,但你这个想法...
我见过很多表达式,跨越多行。这是提高可读性的好方法! – 2010-05-11 22:41:17
那里确实没有魔术锤。让他们易于管理的最好方法是将嵌套的ifs分解为自己的函数,使其更具可读性。
此外,请不要忘记array_filter。这可以让你不必编写for循环来过滤项目。
此外,您可以通过使用guard statements来消除嵌套。你基本上反过来,如果做一个return
而不是(将条件分解成函数的另一个原因)。
那么if
是if
,那里没有其他的东西了。当然switch
是一种替代方案,但取决于它可能不适用的条件。
如果你正在做OOP,state design pattern可能是你所需要的。
否则,您必须提供更多的信息...
如果你不能在一个屏幕上阅读折你的算法,有你需要重构你的代码朝着更可读性99.9%的机会。
变化
if ($isHappening) {
// ... millions of lines of code
} else {
// .. another million lines of code
}
到
if ($isHappening) {
happen();
} else {
didntHappen();
}
function happen() {
// millions of lines of code
}
function didntHappen() {
// another million lines of code
}
欢迎面向对象:)
class Case1 {
function do() { echo "case 1"; }
}
class Case2 {
function do() { echo "case 2"; }
}
$object = new Case1();
$object->do();
的世界,然后,有一个使用数组调度:
$choices = array("case1" => new Case1(), "case2" => new Case2(), ...);
$choices[ $_GET["case"] ]->do();
一个巧妙的诀窍,但可能与OO滥用有关。 – 2010-05-11 19:47:57
@xtofl所倡导的是多态的智能用法。显然,这是一个过分简化的情况,但是使用多态性来重构复杂的if语句是实体OO设计的一部分。 – 2010-05-11 19:57:07
我可以为此担保。经过OOP一段时间后,冗长,复杂的if语句对我来说是陌生的。现在一切都变得更短,更简单。 – 2010-05-12 00:18:41
如果“大”,你的意思是大,高度嵌套的“ifs”,这是一个明显的代码气味的迹象,你应该看OOP和设计模式。
- 1. 处理大量的if-else语句,转
- 2. PHP IF语句中的IF IF语句
- 3. 如何处理多个if语句PHP
- 4. 批处理 - 在IF语句
- 5. if语句处理操纵
- 6. Incrontab不处理IF语句
- 7. 批处理脚本中的IF语句
- 8. if/else-if语句如何处理?
- 9. 在if语句中处理StringIndexOutOfBoundsException Java
- 10. 如何处理if-than语句中的大量条件?
- 11. Python的if语句错误处理
- 12. jQuery的if语句和事件处理
- 13. php if语句
- 14. PHP if语句?
- 15. if语句php?
- 16. php if语句
- 17. ASH if if语句中的if语句
- 18. If,else PHP中的语句
- 19. WordPress的:简单的PHP IF语句不处理
- 20. IF语句批处理脚本
- 21. C预处理与if语句
- 22. 处理多个Javascript IF语句
- 23. 批处理文件“If”语句错误
- 24. If-else语句减少处理时间
- 25. 批处理文件if语句错误
- 26. 使用IF语句处理回车键
- 27. 使用If语句处理Bool值
- 28. if if ifif语句在PHP
- 29. 理解IF语句
- 30. 整理If语句
你的if语句有多大?有可能它们可以被简化,并且取决于你正在处理的逻辑类型,可能有其他选择。不过,如果你发布了一些有洞察力的代码。 – 2010-05-11 19:21:21
将其分解为一个函数。 – kennytm 2010-05-11 19:21:52
不完全确定你的意思。就像红宝石的'除非'? – 2010-05-11 19:22:16