0

現在、PHP 5.2.9 を使用しています。このコードをリファクタリングして、読みやすく整理しやすくする方法はありますか?

  if ($is_read_only == true) {
      echo ($affiliate['affiliate_gender'] == 'm') ? MALE : FEMALE;
  } elseif ($error == true) {
      if ($entry_gender_error == true) {
            echo tep_draw_radio_field('a_gender', 'm', $male) . '  ' . MALE . '  ' . tep_draw_radio_field('a_gender', 'f', $female) . '  ' . FEMALE . ' ' . ENTRY_GENDER_ERROR;
      } else {
            echo ($a_gender == 'm') ? MALE : FEMALE;
            echo tep_draw_hidden_field('a_gender');
      }
  } else {
      echo tep_draw_radio_field('a_gender', 'm', $male) . '  ' . MALE . '  ' . tep_draw_radio_field('a_gender', 'f', $female) . '  ' . FEMALE . ' ' . ENTRY_GENDER_TEXT;
  }
4

4 に答える 4

4

なぜもっと少ない行でそれをしたいのかわかりませんが、ここに行きます:

echo $is_read_only === true
?   $affiliate['affiliate_gender'] === 'm' ? MALE : FEMALE
:   $error === true
?   $entry_gender_error == true
?   tep_draw_radio_field('a_gender', 'm', $male) . '  ' . MALE . '  ' . tep_draw_radio_field('a_gender', 'f', $female) . '  ' . FEMALE . ' ' . ENTRY_GENDER_ERROR
:   ($a_gender === 'm' ? MALE : FEMALE) . tep_draw_hidden_field('a_gender')
:   tep_draw_radio_field('a_gender', 'm', $male) . '  ' . MALE . '  ' . tep_draw_radio_field('a_gender', 'f', $female) . '  ' . FEMALE . ' ' . ENTRY_GENDER_TEXT;

それは確かにもっと読みやすいものではありません。読みやすさと圧縮は相反するようです。

編集:

その中での挑戦のために、私はもう少し先に進みました。

echo $is_read_only
?   $affiliate['affiliate_gender'] === 'm' ? MALE : FEMALE
:   $error && !$entry_gender_error
?   ($a_gender === 'm' ? MALE : FEMALE) . tep_draw_hidden_field('a_gender')
:   tep_draw_radio_field('a_gender', 'm', $male) . '  ' . MALE . '  ' .
    tep_draw_radio_field('a_gender', 'f', $female) . '  ' . FEMALE . ' ' .
    ($error ? ENTRY_GENDER_ERROR : ENTRY_GENDER_TEXT);

これは、私が人間としてできる最悪のことです。

神が私の魂を憐れんでくださいますように:)

于 2012-11-06T22:45:19.577 に答える
3

' を置くことは冗長で不要であるため、他の if ステートメントif ($is_read_only == true)if ($is_read_only)同様に変更できます== true'

于 2012-11-06T22:43:46.947 に答える
1

私はこの方法を好みます:

if ($is_read_only)
    echo ($affiliate['affiliate_gender'] == 'm') ? MALE : FEMALE;
elseif ($error)
    if ($entry_gender_error)
        echo tep_draw_radio_field('a_gender', 'm', $male) . '  ' . MALE.
             '  ' . tep_draw_radio_field('a_gender', 'f', $female) .  
             '  ' . FEMALE . ' ' . ENTRY_GENDER_ERROR;
    else
        echo ($a_gender == 'm') ? MALE : FEMALE , tep_draw_hidden_field('a_gender');
else
    echo tep_draw_radio_field('a_gender', 'm', $male) . '  ' . MALE .
         '  ' . tep_draw_radio_field('a_gender', 'f', $female) .
         '  ' . FEMALE . ' ' . ENTRY_GENDER_TEXT;

読みやすさを向上させるために、長すぎるエコー文を使用しないようにしています。{s と }s の結果が多すぎて面倒です。

于 2012-11-06T22:57:47.797 に答える
1

それは、「圧縮」が正確に何を意味するかによって異なりますか?

明確にしていないので、基本的な回答を得ています。

スペースの削除:

なんらかの方法でコードを高速化することを期待している場合でも、気にしないでください。PHPファイルを圧縮(スペースを小さくする/スペースを削除)しても、実行時間は短縮されません。PHP は毎回ファイルを読み取り、バイトコードにコンパイルして実行します。これを行うと、同僚の目だけでなく、あなたの目も出血します。ただそれをしないでください!

読みやすさ/使いやすさのために:

次に、コード/クラス/関数を、意味があり読みやすいブロックに適切に配置するのが賢明です。これはあなただけでなく、あなたと一緒に働く人々をも助けます。設定されたインデント レベル、間隔/ブラケット/ネスト スタイルなどを使用します。

コードのパフォーマンス:

コード (クラス/関数/ループ/接続/ステートメント) を視覚的に改善する方法とコードのパフォーマンスを改善する方法は無数にあり、さまざまなツールを使用してプロファイリング/テストできます。

これがポインタとして役立つことを願っています。

于 2012-11-06T22:59:32.350 に答える