2012-11-06 38 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和}结果也很麻烦。