当我使用一些嵌套的if / else语句时,如果我的代码逻辑与我原来的想法相符,有时我会感到困惑。我使用了一些简单的程序代码,那么如何训练我的理解呢?
答案 0 :(得分:2)
尝试将代码拆分为函数。如果你有深层嵌套的if / else语句,那么你可以为“if”测试和结果逻辑创建命名良好的函数。例如,更改:
if ($something == "a" && $somethingElse == "b") {
// code
}
else if ($whatever > 4) {
// more code
}
else {
// yet more code
}
到
if (condition1True()) {
handleCondition1();
}
else if (condition2True()) {
handleCondition2();
}
else {
handleDefaultCondition();
}
让您的代码更像英语,这意味着您可以更轻松地了解它的工作原理。您还可以拆分您的功能,以便每个功能只需要做一些简单的事情,然后将这些功能组合成更高级别的行为。
编辑:关于评论,我倾向于选择功能齐全的函数和变量而不是大量的评论。如果您可以在没有评论的情况下阅读代码,那么这是理想的,但显然您有时仍需要评论。绝对值得为每个函数编写Javadoc样式的注释,详细说明参数和返回值的含义,但代码中的内联注释有时比帮助更具障碍。答案 1 :(得分:0)
评论!在每个if / else块上方的注释中写下您的原始想法,然后确保每个块的条件匹配您在注释中列出的伪代码。如果他们这样做,请在完成重新阅读评论后再回过头来看 - 如果其中的逻辑看起来仍然有效,那么您的代码很可能会很好。我发现更容易阅读概述条件所做的评论,而不是动态地解读每个条件。当然,这也意味着保持评论的最新状态。
我遇到过的最优秀的程序员之一已经发布了一些函数,其中包含详细说明该函数应该如何工作的注释。他可以用简单的英语阅读它,以确保它有意义,然后实施,正如他所说,一个简单的翻译问题。这可能不适合所有人,但它可能会帮助您保持专注。
答案 2 :(得分:0)
首先制作PHP文件的副本; - )
然后尝试将一些深度嵌套的条件代码块重构为它们自己的函数,并仔细选择这些函数的名称。
这将迫使你考虑代码。
答案 3 :(得分:0)
使用适当的函数调用简化复杂的条件和内部逻辑。重构代码以使其更清晰,变成小块。如果合适,使用switch语句,如果处理类似对象则使用多态性等。
查看一些示例代码将有助于提供更合适的示例,但请考虑以下设计示例:
if($a.isAnimal && $a.animalIsAlive){
if($a.isDog){
if(!$a.hasHadWalk && date('h') > 6 && date('h') < 20){
getLeash();
attachLeashToCollar();
putOnShoes();
...
}else{
//doNotWalk
}
}else{
//some other stuff here
}
}
可以重构为
if(canBreathe($a)){
if($a.isDog){
if(shouldWeWalk($a)){
walkDog();
}
}else{
//some other stuff here
}
}
function canBreathe($a){
return $a.isAlive && $a.isAnimal;
}
function walkDog(){
getLeash();
attachLeashToCollar();
putOnShoes();
...
}
function shouldWeWalk($a){
return (!$a.hasHadWalk && date('h') > 6 && date('h') < 20);
}
答案 4 :(得分:0)
我认为
if (condition1True()) {
handleCondition1();
}
else if (condition2True()) {
handleCondition2();
}
else {
handleDefaultCondition();
}
这种变体更为可取,因为可以更好地理解程序在做什么。