以最佳方式创造逻辑

时间:2012-11-02 10:03:58

标签: php

我可以知道吗...有一种最好的方法来做这个逻辑,而不是我到目前为止尝试过的吗?

这是我的代码......

//------------ Check code search bar form submission ---------------//
if ( isset( $_POST['code_search_submitted'])) {
  if ( isset( $_POST['searchCode']) && !empty( $_POST['searchText'])) {
    if (is_numeric( $_POST['searchText']) && (strlen($_POST['searchText']) == 4)) {

       $searchCode = $_POST['searchCode'];
        if ( $searchCode == 1 ) {
          $_SESSION['searchCode'] = 'TutorCode';
        } elseif ( $searchCode == 2 ) {
          $_SESSION['searchCode'] = 'InstituteCode';
        }

        $_SESSION['searchText'] = $_POST['searchText'];

     } else {
       $searchingError= 'Ennter four digits for code!';
       echo '<script type="text/javascript">';
       echo "alert('" . $searchingError . "')";
       echo "</script>";
     }


      $url = BASE_URL . 'search/searching.php'; // Define the URL:
      ob_end_clean(); // Delete the buffer.
      header("Location: $url");
      exit(); // Quit the script.

     } else {
       $searchingError= 'Enter Tutor or Institute Code!';
       echo '<script type="text/javascript">';
       echo "alert('" . $searchingError . "')";
       echo "</script>";
     }
  } //---- Check code search bar form submission ----//

非常感谢任何评论...

谢谢......

2 个答案:

答案 0 :(得分:2)

OMG!是!这是我所见过的最好的逻辑!

答案 1 :(得分:0)

我不知道这是否符合您的要求,但我认为您可以阅读Steve McConnell撰写的“Code Complete”一书。任何必须理解这些代码的人都必须非常非常难以理解其意图,并且深度嵌套的逻辑语句使得很难看到正在发生的事情。

首先,正如@ yes123所说,缩进有帮助。

其次,评论会很好。

第三,降低复杂性确实会有所帮助。例如,而不是

if ( isset( $_POST['code_search_submitted'])) {

你可能会说: if(isValidSearch($ _ POST)){

 }
if ( isCodeSearch($_POST)) {

将post var的检查包装到一个单独的函数中。

接下来,您可以将IF语句的内部主体包装到函数中 - 例如,replace if(is_numeric($ _POST ['searchText'])&amp;&amp;(strlen($ _ POST ['searchText'])== 4)){

   $searchCode = $_POST['searchCode'];
    if ( $searchCode == 1 ) {
      $_SESSION['searchCode'] = 'TutorCode';
    } elseif ( $searchCode == 2 ) {
      $_SESSION['searchCode'] = 'InstituteCode';
    }

    $_SESSION['searchText'] = $_POST['searchText'];

 }

if (isValidSearch($_POST)) {

    handleSearch($POST)
}

接下来,我建议您将应用程序中的业务逻辑与显示逻辑分开 - 将HTML语句包装在业务逻辑中(例如Javascript错误)使其难以维护。考虑一个MVC框架。这也适用于将业务逻辑与应用程序逻辑分离(例如输出缓冲) - 对于非平凡的应用程序,您希望能够修改业务逻辑而不必担心破坏应用程序逻辑,反之亦然。您的示例代码表明业务逻辑的简单更改(例如添加新类型的搜索)很容易导致某人忘记重新设置输出缓冲区...