良好的编码习惯

良好的编码习惯

问题描述:

我毕业这个月,所以在这之前我要准备自己在行业:)工作良好的编码习惯

My Question: 

比如我想用一个列表框列出表中的所有歌曲这就是我是如何实现它:

playlist.php 

<tr id='' > 
<td width="" class="">&nbsp;&nbsp;<font color=#00000 />Select Songs</td> 
<td width="" colspan=""> 
<select size='25'multiple='multiple' id="select_songs" name="playlist_songs[]"> 
<?php 
display_songs_list(); 
?> 
</select></td> 
</tr> 

,我有一个单独的php_functions.php文件,其中我已经实现了所有的PHP函数

function display_songs_list(){ 
    $query = "select * from songs order by ID asc"; 

    $result = mysql_query($query); 
    if(!$result) 
    echo "<script language = 'javascript'>alert('$result Sorry couldn't connect to the database...');</script>"; 
    else{ 
     $num_rows = mysql_num_rows($result); 
     if($num_rows > 0){ 
      while($row = mysql_fetch_array($result)){ 
       $ID = $row['ID']; 
       $title = $row['title']; 
       $value = $ID.'_'.$title; 
       echo "<option id=\"$ID\" value=\"$value\">$ID : $title</option>"; 
      } 
     } 
    } 
} 

建议这种实施方式。我还能做些什么来增加scalability/maintainability/re-usability。请在此引导我。是否建议遵循任何行业编码标准,如果是的话,你会发现什么。谢谢。

+0

很好的开始,你可以尝试从视图中分离数据操作,所以你有playlist.php巫婆查询数据库和生成阵列和数组/ stdClass对象需要显示,在构建数组后你测试数组是否有足够的入口(例如,大于0),然后调用(包含)playlist_view.php,如果没有任何基于查询的入口,你可以使用error.php视图或类似的东西。 – 2011-03-21 07:54:37

+0

也作为另一个开始,我确实希望你还没有在布局中使用表格 – corroded 2011-03-21 08:04:16

+0

当它们以预期的方式使用时(即显示表格数据),表格没有任何问题! – 2011-03-21 10:13:01

  • 内联样式属性(color=#00000)已被弃用并杀死小猫。了解CSS。
  • 对于表格数据以外的任何东西(如电子表格),建议不要使用表格,而是使用CSS进行布局。
  • 使用&nbsp;对空格进行硬编码是不可取的,如果它没有增加任何含义,请学习使用CSS添加空格。
  • echo ing要么HTML 要么来自同一函数的Javascript是不好的。在您调用该函数的位置,Javascript警报将导致无效的HTML语法。
  • 混合数据库调用和HTML如此紧密不好。研究MVC分离。
  • 向用户输出一个随机的,相当无意义的JavaScript警告是在一半的页面中完成的,这很糟糕。您应该显示一个专用的错误页面。请参阅MVC,它可以帮助您完成此任务。
  • 为属性混合使用单引号和双引号不一致,导致代码更难以阅读。改为使用一种类型的引号。
  • 有一个在您的标记显示提交选择的选择选项
+0

非常感谢。您是否推荐任何书籍或网站来获得MVC的深入知识,因为我之前没有尝试过。所有这些日子里,我并没有给CSS留下太多的重要性,认为它对于“设计”人来说,但现在看起来非常重要。 – Maggie 2011-03-21 09:10:20

+0

@Mahin我建议你玩一个PHP框架。这可能会让你陷入深度,因为它通常也意味着学习面向对象,但是当你完成它时将是值得的。例如,参见Zend,CakePHP或CodeIgniter。 – deceze 2011-03-21 12:39:50

以我的建议来看看,但首先,你应该真的把与数据库交谈的代码从给出用户错误的代码中分离出来,它们是两个单独的东西。所以关于如何在php中实现这个想法可能是一个函数,它查询数据库并返回一个关联数组和所有其他函数打印的结果。此外,你应该有一个更通用的数据库类,所有的查询都要经过。这是首选的原因是您可以稍后轻松地切换数据库,只需对代码进行最小限度的更改,但如果在调用mysql_query()的每个函数中都可能会变得更加复杂。

它的一个相当不错的方法来承担PHP没有形成。

我通常会将我的代码拆分为模型/视图/控制器类型模型。

“控制器”是当URL访问服务器时运行的程序。它: -

  • 抓取并检查屏幕上的任何获取/张贴的变量。
  • 踢任何请求的操作,如数据库更新。
  • 踢一些“模型”函数来获取下一个屏幕的数据。
  • 使用“查看”功能对下一个屏幕进行格式设置。

请注意控制器本身不会发出任何html。

“模型”函数执行数据库访问并应用“业务”规则。

“视图”功能发出的HTML标签等

除了一般的整洁这个大好处是,你的处理顺序是不依赖于域出现在屏幕上的顺序。所以它确实使程序更易于维护。

+0

非常感谢。您是否推荐任何书籍或网站来获得MVC的深度知识,因为我之前没有尝试过。 – Maggie 2011-03-21 09:16:04

+1

使用Zend Framework,越来越多的公司正在使用它进行开发,这意味着如果你知道它,你将有更好的机会找到工作。 – 2011-03-21 10:14:47