如何编写这段代码更干?有些东西让我很烦恼。我正在使用OR条件检查类别和帖子是否为空。但是我必须在登录后再次检查这两个条件。此致...
if($app->getCategories()==null || $app->getPosts()==null ) { if(isset($_POST['username'])&& isset($_POST['password'])) { if($app->login($_POST)!=false) { if($app->getCategories()==null) { $app->installCategories(); } if($app->getPosts()==null) { $app->installPosts(); } } } else { echo $app->login(); } }
答案 0 :(得分:1)
作为一种优化方法,我建议创建逻辑变量,以避免两次执行getCategories
和getPosts
方法。
对于我而言,如果不了解您的应用业务逻辑,很难为您的代码建议其他重构。
$noCategories = $app->getCategories() == null;
$noPosts = $app->getPosts() == null;
if($noCategories || $noPosts) {
if(isset($_POST['username']) && isset($_POST['password'])) {
if($app->login($_POST)!=false) {
if($noCategories)
$app->installCategories();
if($noPosts)
$app->installPosts();
}
}
else {
echo $app->login();
}
}
答案 1 :(得分:0)
if(isset($_POST['username']) && isset($_POST['password'])) {
if($app->login($_POST)) {
($app->getCategories() ? '' : $app->installCategories());
($app->getPosts() ? '' : $app->installPosts());
}
} else {
echo $app->login();
}
答案 2 :(得分:0)
可能会尝试这样:太多嵌套ifs由于多种原因而很糟糕:(
$categories = $app->getCategories();
$posts = $app->getPosts();
if($categories == null || $posts == null) {
if(! isset($_POST['username']) || ! isset($_POST['password'])) {
echo $app->login();
}
if($app->login($_POST) != false && $categories == null) {
$app->installCategories();
}
if($app->login($_POST) != false && $posts == null) {
$app->installPosts();
}
}
答案 3 :(得分:0)
$isCategoriesNull = $app->getCategories() == null;
$isPostsNull = $app->getPosts() == null;
$postKeysToCheck = ['username', 'password'];
if ($isCategoriesNull || $isPostsNull) {
if (!array_diff($postKeysToCheck, array_keys($_POST))) {
if ($app->login($_POST) != false) {
if ($isCategoriesNull) $app->installCategories();
if ($isPostsNull) $app->installPosts();
}
} else {
echo $app->login();
}
}