【发布时间】:2015-11-10 03:05:56
【问题描述】:
我正在使用 PHP 设计一个小型网页游戏。
游戏中有几个按钮,玩家点击时会发出ajax请求。
当我需要对每个按钮做不同的判断时,我写下如下代码...
if ($button != 'A') {
if ($button == 'B') {
if (!$this->functionB()) {
return $this->returnJson(<some message>);
}
} elseif ($button == 'C') {
if (!$this->functionC()) {
return $this->returnJson(<some message>);
}
} else { // other buttons go here
if (!$this->myFunction($button)) {
return $this->returnJson(<some message>);
}
}
}
// other logic...
return $this->returnJson(<success message>);
当玩家点击按钮A时,他绝对会收到成功消息。
当玩家点击按钮 B 时,如果他没有通过函数 B() 的判断,他将收到错误消息。如果他通过,他将收到成功消息。点击按钮 C 也是如此。
当玩家点击其他按钮(大约 10 个按钮)时,将由 myFunction() 进行判断。
但我认为代码并不优雅,因为有三层 if-else 语句。所以我尝试将其更改为 switch-case 语句。
switch ($button) {
case ('A'):
break;
case ('B') {
if (!$this->functionB()) {
return $this->returnJson(<some message>);
}
break;
case ('C') {
if (!$this->functionC()) {
return $this->returnJson(<some message>);
}
break;
default: // other buttons go here
if (!$this->myFunction($button)) {
return $this->returnJson(<some message>);
}
break;
}
}
// other logic...
return $this->returnJson(<success message>);
对此我还是不满意,因为switch语句中有if语句。
在这种情况下如何让我的代码更干净?
我是编程新手,很想为我的编码风格打下良好的基础。 希望你能给我一些建议。非常感谢!
【问题讨论】:
-
你可以使用多个完整的ifs...但尽量统一使用“!=”或“==”...我更喜欢只使用“==”...你可以将输出存储在一个var中,并且只为每个if设置,最后只返回一个时间
标签: php coding-style