簡體   English   中英

學習如何重構PHP代碼

[英]Learning how to refactor PHP code

我目前正在使用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;
  }

我不確定為什么要用更少的行數,但是在這里:

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);

作為人類,這是我最糟糕的事情。

願上帝憐憫我的靈魂:)

您可以將if ($is_read_only == true)更改為if ($is_read_only)以及其他if語句,因為放置' == true'是多余且不必要的

我更喜歡這樣:

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和}結果也很混亂。

這取決於“ 壓縮 ”到底是什么意思?

既然您還沒有弄清楚,您將得到一個基本的答復。

刪除空格:

如果您希望以某種方式提高代碼速度,請不要打擾。 壓縮(使空間更小/刪除空間)php文件不會加快執行時間。 PHP每次都會讀取文件,將其編譯為字節碼並運行。 這樣做會使您和同事的眼睛流血。 只是不要這樣做!

為了提高可讀性/可用性:

然后,明智的做法是將代碼/類/功能相應地分成有意義且易於閱讀的塊。 這不僅會幫助您,還會與您一起工作的人。 使用設置的縮進級別,間距/括號/嵌套樣式等。

對於代碼性能:

為了可視化和出於代碼性能的考慮,有無數種方法可以改進代碼(類/函數/循環/連接/語句),可以使用多種工具進行配置/測試。

希望這對您有所幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM