首先,我是一家大公司的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,它是一种完全不同的风格(至少对我而言)。
感谢您阅读至今,我将非常感谢您的任何评论。
答案 0 :(得分:2)
总的来说,采用公司的风格 - 如果他们的风格一致 - 是更好的方法 当几个人在同一个项目上工作时,总体上保持一致性比在项目的不同文件中使用不同的样式更好。
但是,如果你的老板不能告诉你他希望你使用的实际风格是什么,这很难。你不能问他吗?
在这种特殊情况下,我可以想象他不喜欢在php中跳舞,而不是使用echo作为简短的html片段。或者在最后一个中打开{在第一个php块和关闭}。有些人讨厌这个。但至少他应该告诉你。
答案 1 :(得分:0)
我认为拥有代码规范总是一件好事 我认为这些例子都不是很好 无论如何,你应该在这里使用模板或heredoc syntax 但对我来说,第一个例子比第二个例子更易于维护。
答案 2 :(得分:0)
我也是你的解决方案的粉丝,而且我经常使用它,因为在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;
答案 3 :(得分:0)
与PHP一样,HTML缩进应始终反映逻辑结构。使用制表符(或4个空格)。 将PHP和HTML混合在一起时,缩进PHP块以匹配周围的HTML代码。关闭PHP块应该与打开块匹配相同的缩进级别。我总是使用替代的无括号语法 http://php.net/manual/en/control-structures.alternative-syntax.php
答案 4 :(得分:0)
你的风格有点不好,因为它没有将逻辑与前端分开(就像模板一样)。另一方面,你的老板风格更糟。
如果他说“编码风格不好”,那么他可能会继续说“你需要使用我更糟糕的编码风格,因为这就是我们代码现在的样子”。 好吧,即便如此,他仍然是对的。你可以更容易地采用他们的旧风格,而不是将所有现有的代码改变成你的风格。答案 5 :(得分:0)
我认为服务器端脚本带来的最大优势之一是,现在可以将html与我们的代码片段混合,就像第一个例子中一样。将html连接成变量并一次输出变量的第二种方式让人联想到cgi编程日。我担心这是古老的,并且已经取代了第一种方法。查看任何现代服务器端脚本语言,这应该给你足够的证据。
我不太确定你的老板反对第一种的论点是什么,但总的来说,如果第二种风格是“公司风格”,我会倾向于支持你的老板。在大型组织中工作时,许多开发人员为相同的代码库做出贡献,每个人都必须遵循通用的编码标准。即使我们发现它不那么直观(最初)和可读性。这对于软件的可维护性来说是一个很长的路要走,而对于其他读取代码的人来说则不那么令人沮丧。
最后,我认为,没有对错“风格”。效率更高,效率更低。在你的例子中,我不确定前者是否更有效,但它肯定更具可读性。
记住一件事,编码风格不是关于自我。
答案 6 :(得分:0)
我可以提出你的问题,因为在很长一段时间内,我对代码的看法也一样。简而言之,这个想法是“如果最终结果符合预期,为什么要关心代码?”。这个概念的问题在于,当时我是公司唯一的开发人员,所以没有人可以比较或学习,所以开发一种编码的“个人风格”来平衡是有意义的。快速发展和灵活性,至少在我看来。
然而,这种方法,即学习和成长的问题在于,我们倾向于排除广泛接受的概念并创建我们自己的Golden Hammers。为什么这是个问题?如果你正在考虑一个开发人员,那可能不是那么明显,但想想当一个“金锤”开发者团队试图团结其努力时会发生什么。关于如何编写代码将没有达成共识,因为他们每个人都相信他有最好的方法。
现在回到你的问题。为什么第二种风格比第一种更好? 主要原因是交织PHP和HTML代码并不是一个好主意。除非你有一个相当友好的代码编辑器(即不使用像记事本这样的默认编辑器),否则该代码将非常难以阅读,更不用说调试和/或改变了。
如您所见,在第二个示例中,HTML代码由串联字符串组成,然后显示。为什么这个版本更好?我想到的第一件事是更好的责任隔离。你有一大块代码专注于创建表,然后是另一个显示它的部分。这样,如果要更改处理创建的部件,显示部件保持不变,或者您可以更改显示代码而不触及创建代码。在第一个版本中,两者是同一个版本,从而消除了代码的一些灵活性以及可读性。 如果这不是那么明显,想象一下在一个返回字符串的函数中创建表的代码。然后,您可以以任何方式回显其结果。
这可能不容易看到,因为上面的代码示例范围很小,但我们可以推断。
因此,最后,您应始终努力提高代码部分的灵活性以及清晰度。试着问自己“这段代码将如何支持更改?”。如果改变事物意味着你需要重写代码,那么这是设计不灵活的第一个迹象。 另一个值得问的问题是“其他开发人员将如何使用我的代码?”。如果它需要更改和/或大量设置,对任何人都不会有太多用处。
我希望这有助于解释我们在这里讨论的两种方法之间的区别。祝你老板好运,祝你好运! :)