nop*_*ole 1 php maintainability code-reuse dry
我想坚持不要重复自己的原则,但有时当我将PHP与HTML和CSS一起编写时,如果我在不同的情况下重复使用相同的代码,我的代码很快会有很多 - 如果 - 然后 - 否则代码不易维护.
如果使用模板引擎Smarty,这可能是一个更大的问题,因为大多数代码编辑器都不匹配{if} {else} {/ if}所以程序员需要在视觉上寻找匹配的标签,并且不容易当有3或4级嵌套{if} {else} {/ if}时.
在这种情况下,有没有办法坚持DRY,但仍然有良好的可维护代码?
我们有更多的信息...你用什么程序来编写代码?
不重复自己的提示:
使用某种模板.这样做可以使您不必重复代码以在每个页面中显示内容.IE如果您有一个包含20页的网站,并且您决定更改布局,则不必通过然后更改所有20个页面.
使用功能.如果您有执行特定任务的代码,请不要在整个程序/页面中多次编写该代码.创建一个函数,然后在需要执行该任务的每个位置调用它.这样,如果您需要进行更改,您只需修改该功能,而无需搜索代码以查找执行该任务的每个位置.如果您了解类和方法(方法是类中的函数),对于许多任务,这甚至更好,因为它为您提供数据封装并允许您将相关函数组合在一起,以便您可以在将来包含该类项目根据需要.
如果你遇到很多if/else语句和代码不可读的问题,你可以做一些事情:
1.考虑尝试一个新的编辑器.代码折叠是必须的.有些编辑器还有垂直线,突出显示和匹配缩进的代码,以便您知道什么是什么.如果你想要一个体面的免费编辑器,我会推荐Notepad ++,因为它有这两个功能(只是谷歌它,我不能在这里添加链接).
2.有一些技巧可以用来减少你拥有的嵌套if语句的数量......
示例(此代码):
if (item1 == true) {
if (item2 == true) {
item3 = 5;
}
else {
item3 = 10;
}
}
else {
if (item2 == true) {
item3 = 15;
}
else {
item3 = 20;
}
}
Run Code Online (Sandbox Code Playgroud)
也可以扁平化为:
if (item1 == true && item2 == true) {
item3 = 5;
}
else if (item1 == true && item2 == false) {
item3 = 10;
}
else if (item1 == false && item2 == true) {
item3 = 15;
}
else {
item3 = 20;
}
Run Code Online (Sandbox Code Playgroud)
因此,如果您有3或4级嵌套if/elses并且想要将它们展平,您可能会发现您的代码更易于使用多个参数,如上所述.它做同样的事情,只是偏好你做哪种方式.
尝试而不是混合你的逻辑(我假设PHP)和你的显示(我假设HTML/CSS).这并不总是那么容易,但是使用模板和css是可能的.让我举一个实际示例,说明如何在显示用户名作为欢迎消息的主页上执行此操作.
内联PHP(尽量避免):
<html>
<body>
<?php
if ($logged_in == true) {
echo "Welcome ",$user->name(),"!";
}
else {
echo "Welcome Guest!";
}
?>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
逻辑与显示分开(更好):
<?php
if ($logged_in == true) {
$greetingMessage = "Welcome ",$user->name(),"!";
}
else {
$greetingMessage = "Welcome Guest!";
}
?>
<html>
<body>
<?php echo $greetingMessage; ?>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
^保持逻辑与视图(HTML)分离将帮助您在项目开始变得非常复杂时不会被淹没.最好不要混合!:)
祝你好运!