【问题标题】:Coding Styles in PHP / HTMLPHP / HTML 中的编码风格
【发布时间】:2012-01-10 07:30:44
【问题描述】:

首先,我是一家大公司的 IT 专家实习生。我们最常使用 PHP 和 MySQL。我有几年的网页设计经验,所以我当然形成了自己的编码风格。

昨天,我的老板指责我编码风格不好。由于我在这里使用的是自定义 CMS,当然,我必须稍微适应他们的编码风格。但有时,我只是拒绝这样做,因为我看不到特定代码部分的任何优势。这是我所做的一个简短示例:

<div id="news">

<?php
foreach ($news as $k=>$v) {
    $v["Datum"]=strftime("%d.%m.%Y", strtotime($v["Datum"]));
?>

    <div class="news_entry">
        <div class="news_title"><span><?php echo $v["Headline"];?></span><span class="news_date"><?php echo $v["Datum"];?></span></div>

        <div class="news_content"><?php echo $v["Detail"];?></div>
    </div>

<?
}
?>

</div>

这是一个显示最近新闻的小部件,真的没什么特别的。由于我的老板还没有见过这种风格的编码,他说这样编码真的很糟糕。我宁愿适应他的风格:

    <?php
    $table.="<table class='sn' border=1 cellspacing=0>";
    $table.="<tr><td class='ueberschrift' colspan='4'>Detail Informationen</td></tr>";
    $table.="<tr><td class='us_blau_l'>Material Nr.</td><td>".$erg[1][komponente]."</td>
  <td  class='us_blau_l'>Sollzeit</td><td>".$erg[1][response_at]." Tage</td></tr>";
    $table.="<tr><td class='us_blau_l'>iKLE:</td><td>".$erg[1][ikle]."</td><td  class='us_blau_l'>Netzplan Std.:</td>
  <td>".$erg[1][np_std]." h</td></tr>";
   echo $table;
    ?>

他没有告诉我为什么这会更好(我自己也看不到),所以我问你。当然,这些示例并不相同,但对于如何在 PHP 文件中输出 HTML 来说,这是一种完全不同的风格(至少对我而言)。

感谢您到目前为止的阅读,我将感谢您的任何评论。

【问题讨论】:

  • 你老板很搞笑)我把他的风格称为“百万级联”风格..糟糕..非常糟糕......
  • 如果你喜欢不可读的代码,选择你老板的方式......

标签: php html coding-style


【解决方案1】:

一般来说,采用公司的风格(如果他们有一致的风格的话)是更好的方法。
当几个人在同一个项目上工作时,总体上保持一致比在项目的不同文件中使用不同的样式更可取。

但是,如果您的老板不能告诉您他希望您使用的实际风格是什么,那就很难了。你不能问他吗?

在这种特殊情况下,我可以想象他不喜欢跳进跳出 php 而不是使用 echo 来表示简短的 html sn-ps。或者第一个 php 块中的开始 { 和最后一个中的结束 }。有些人讨厌这样。但至少他应该告诉你。

【讨论】:

  • 我讨厌这是真的。加一。
  • 在我看来,他无法理解代码的所有内容,所以这就是我应该按照他的方式编写代码的原因。如果可能的话,我理解坚持现有的代码,但我发现这种方式很糟糕(至少在这种情况下)。不过,感谢您的回答!
【解决方案2】:

我认为有代码规范总是一件好事。
我认为这些例子都不是很好。
无论如何,您应该在这里使用模板或heredoc syntax
但对我来说,第一个示例比第二个更易于维护。

【讨论】:

    【解决方案3】:

    我也是您的解决方案的粉丝,我经常使用它,因为在 html 上阅读超过 1-2 行的内容比将其打包到变量中要好得多。

    您可能想通过使用 heredoc 语法来考虑中间立场:

    $table = <<<DELIMITER
      <div class="news_entry">
            <div class="news_title"><span>{$v["Headline"]}</span><span class="news_date">{$v["Datum"]}</span></div>
            <div class="news_content">{$v["Detail"]}</div>
        </div>
    DELIMITER;
    

    【讨论】:

      【解决方案4】:

      与 PHP 一样,HTML 缩进应该始终反映逻辑结构。使用制表符(或 4 个空格)。 将 PHP 和 HTML 混合在一起时,缩进 PHP 块以匹配周围的 HTML 代码。关闭 PHP 块应该与开始块匹配相同的缩进级别。我总是使用替代的无括号语法。
      http://php.net/manual/en/control-structures.alternative-syntax.php

      【讨论】:

        【解决方案5】:

        您的风格有点糟糕,因为它没有将逻辑与前端分开(就像模板一样)。另一方面,你的老板风格更差。

        如果他说“糟糕的编码风格”,那么他可能打算继续说“你需要使用我更糟糕的编码风格,因为这就是我们的代码现在的样子”。

        好吧,即便如此,他仍然是对的。采用他们的旧样式比将所有现有代码更改为您的样式更容易。

        【讨论】:

          【解决方案6】:

          我认为服务器端脚本带来的最大优势之一是现在可以将 html 与我们的代码片段混合在一起,就像在第一个示例中一样。第二种将 html 连接成变量并一次性输出变量的方式让人想起 cgi 编程时代。恐怕它已经过时了,已经被第一种方法取代了。看看任何现代服务器端脚本语言,这应该会给你足够的证据。

          我不太确定你的老板反对第一种的论点是什么,但总的来说,如果第二种风格是“公司风格”,我会倾向于支持你的老板。在大型组织中工作时,有许多开发人员为相同的代码库做出贡献,每个人都必须遵循共同的编码标准。即使我们发现它不那么直观(最初)和可读性。总体而言,这对软件的可维护性大有帮助,并且不会让其他人阅读您的代码感到沮丧。

          最后,我认为,“风格”没有对错之分。有效率高的,效率低的。在您的示例中,我不确定前者是否更有效,但它肯定更具可读性。

          记住一件事,编码风格与自我无关。

          【讨论】:

            【解决方案7】:

            我可以理解您的问题,因为在相当长的一段时间内,我对我的代码也有同样的感觉。简而言之,这个想法是“如果最终结果符合预期,为什么还要有人关心代码?”。这个概念的问题在于,当时我是公司唯一的开发人员,所以真的没有人可以比较或学习,所以开发一种“个人风格”的编码来平衡是有意义的至少在我自己看来,快速的开发和灵活性。

            但是,这种学习和成长方法的问题在于,我们倾向于排除广泛接受的概念并创建自己的Golden Hammers。为什么这是个问题?如果您正在考虑一个开发人员,这可能并不那么明显,但请考虑当一个“金锤”开发人员团队试图联合其努力时会发生什么。关于如何编写代码不会达成共识,因为他们每个人都相信自己有最好的方法。

            现在回到你的问题。为什么第二种风格比第一种更好? 主要原因是 PHP 和 HTML 代码交织在一起并不是一个好主意。除非您有一个对代码相当友好的编辑器(即不使用像记事本这样的默认编辑器),否则该代码将很难阅读,更不用说调试和/或更改了。

            如您所见,在第二个示例中,HTML 代码由连接字符串组成,然后显示。为什么这个版本更好?我首先想到的是更好的责任分离。您有一段代码专注于创建表格,然后另一部分显示它。这样,如果您想更改处理创建的部分,显示部分保持不变,或者您可以更改显示代码而不接触创建代码。在第一个版本中,两者是相同的,这反过来又从您的代码中删除了一些灵活性以及可读性。 如果这不是很明显,想象一下在返回字符串的函数中创建表的代码。然后,您可以以任何您想要的方式回显其结果。

            这里可能不太容易看到,因为上面的代码示例范围很小,但我们可以推断。

            因此,在结束时,您应该始终争取代码部分的灵活性和清晰性。试着问自己“此代码将如何支持更改?”。如果改变事物意味着您需要重写代码,那么这是不灵活设计的第一个迹象。 另一个值得问的问题是“其他开发人员将如何使用我的代码?”。如果它需要更改和/或大量设置,它对任何人都没有太大用处。

            我希望这有助于解释我们在这里讨论的两种方法之间的区别。与你的老板一起度过美好的一天,祝你好运! :)

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2014-03-10
              • 1970-01-01
              • 2014-09-10
              • 2016-03-21
              • 1970-01-01
              相关资源
              最近更新 更多