编写清洁代码

时间:2014-09-04 02:10:08

标签: php code-cleanup

所以我在这里有这个简单的功能,因为我懒得在每次需要时写出状态下拉列表。我已经有一个数组,其中所有状态都已设置,缩写为键,名称为值。它工作得很好,但我喜欢写简洁,干净,清晰的代码,而且我仍然非常没有经验,所以我发现我错过了许多愚蠢的简单的***(我为自己教学而不经常练习的代价足够)。

我在两个主要条件中看到了四行冗余代码,我将它们移到if语句之外,除了我有最后一个echo语句,这首先是条件的全部目的,我不认为重新测试$style变量就是犹太人。

是否有一个简单的做法,我只是缺少如何使这个更清洁?

function create_state($style, $form = NULL) {
  global $state;
  echo '<select name="state">'."\n";
  echo '<option value="">--</option>'."\n";
  if ($style === 'abbr') {
    ksort($state);      
    foreach ($state as $abbr => $name) {
      echo "<option value=\"$abbr\"";
      if($form === $abbr)
        echo 'selected="selected"';
      echo ">$abbr</option>\n";
    }
  } else {
    asort($state);      
    foreach ($state as $abbr => $name) {
      echo "<option value=\"$abbr\"";
      if($form === $abbr)
        echo 'selected="selected"';
      echo ">$name</option>\n";
    }
  }
  echo '</select>'."\n";
}

2 个答案:

答案 0 :(得分:1)

您可以使用参考变量:

if ($style == 'abbr') {
    ksort($state);
    $print = &$abbr; // print abbreviation
} else {
    asort($state);
    $print = &$name; // print full name
}
foreach ($state as $abbr => $name) {
  echo "<option value=\"$abbr\"";
  if($form === $abbr)
    echo 'selected="selected"';
  echo ">$print</option>\n";
}

答案 1 :(得分:1)

function create_state($style, $form = NULL) {
  global $state;

  var $output = '';

  $output .= '<select name="state">';
  $output .= '<option value="">--</option>';

  ($style === 'abbr') ? ksort($state) : asort($state);

   foreach ($state as $abbr => $name) {

      $selected = ($form === $abbr) ? 'selected="selected"' : '';
      $toShow = ($form === $abbr) ? $abbr : $name;
      $output .= '<option '.$selected.' value="'.$abbr.'">'.$toShow.'</option>';
    }

  $output .= '</select>';

  echo $output;
}