2012-11-06 68 views
0

我正在使用PHP 5.2.9。有沒有一種方法可以用這種方式重構這些代碼,它更易於閱讀和更好地組織?學習如何重構PHP代碼

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; 
    } 
+2

我假設你的代碼格式更好?另外,你可能意味着*重構*而不是*壓縮*。 –

+2

有時,將代碼放在一起可以更容易閱讀,最大的幫助是縮進嵌套的部分。 – Scuzzy

+5

壓縮通常會導致閱讀困難。 –

回答

1

這取決於你的意思是什麼「compress」?

既然你還沒有澄清,你會得到一個基本的迴應。

去掉空格:

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

出於可讀性/可用性:

然後你會是明智的空間,你的代碼/類/函數相應成塊,使意識和容易閱讀。這不僅能幫助你,還能幫助那些與你一起工作的人。使用設置縮進水平間距/支架/嵌套樣式等

對於代碼的性能:

有很多方法來提高代碼(類/功能/循環/連接/語句)都在無數可視化的形式和代碼性能 - 可以使用各種工具對其進行配置/測試。

希望這有助於指針。

+0

我對Nickhar表示歉意,我使用的是錯誤的術語 - 基本上是用類/函數來看第三點(代碼性能),而不是在冗餘中丟失,否則,等等......我想在改進/優化方面做得更好。謝謝你的分解! – blackhawk

+0

在這種情況下,我指出你在這裏的出發點:http://stackoverflow.com/questions/21133/simplest-way-to-profile-a-php-script。你可以在這裏問很多關於如何執行這些事情的問題 - 或者這樣,人們會迴應! – nickhar

3

你可以改變if ($is_read_only == true)if ($is_read_only)以及您其他的if語句,因爲把'== true'是多餘的和不必要的

+0

我想知道 - 謝謝! – blackhawk

+0

除非你的意思是$ is_read_only ===真 – TecBrat

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

這是我作爲一個人所能做的最糟糕的事情。

願上帝憐憫我的魂:)

+2

哦,上帝,我的眼睛在流血!讓它停止! – Sammitch

+1

大聲笑!我喜歡。混淆敵人! :P – iMoses

+3

+1確實是一件藝術品。簡潔,自我記錄和優雅。我現在正在考慮所有那些我一直使用的多餘換行符,但至少現在我已經看到了燈光! – Gavin

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和}結果也很麻煩。