PHP实例说明编写PHP代码的5个好习惯_PHP技巧_黑客防线网安服务器维护基地--Powered by WWW.RONGSEN.COM.CN

PHP实例说明编写PHP代码的5个好习惯

作者:黑客防线网安PHP教程基地 来源:黑客防线网安PHP教程基地 浏览次数:0

本篇关键词:习惯代码说明实例
黑客防线网安网讯:  5个PHP编程的好习惯    有些人问,优秀程序员和大牛有什么区别,大概有10到20种吧。因为大牛有很好的编程习惯和丰富的经验,所以他们非常的高效。如果不好的编程习惯出现在你的代码里...
  5个PHP编程的好习惯
  
  有些人问,优秀程序员和大牛有什么区别大概有10到20种吧因为大牛有很好的编程习惯和丰富的经验所以他们非常的高效如果不好的编程习惯出现在你的代码里,你的代码效率就会降低。本文阐述一些好的编程习惯,他们可以让你成为更好的程序员。
  
  这些习惯能让你的代码在高效运行的同时提高可维护性。你写代码的时候,可能大部分时间都浪费在维护上了,程序的维护代价很高。培养良好的编程习惯,如模块化设计,可以让你的代码可读性更好,从而容易维护。
  
  代码中的问题往往伴随着不良的编程习惯,而且后者会导致代码不好修改并可能出现新的缺陷。下面有五个好的编程习惯,将帮你避免这些陷阱:
  
  使用友好的命名方式。
  
  使用更精悍短小的代码。
  
  注释你的代码。
  
  编写异常处理。
  
  永远,永远不要复制粘贴.(玉米:我深深的同意这一点)
  
  下面的章节将解释这些习惯。
  
  良好的命名方式是最重要的编程习惯,因为好的命名会让代码易懂,好懂。代码的可读性决定它的可维护性。即使你在代码没有写注释,如果它可读性好的话,它也修改起来也会简单。你应该在练习开时就使用良好的命名方式,让你的代码像一本书一样。
  
  例1包含一个过短的变量名,写出这样的代码非常不好弄懂,而且函数名也没有清晰的描述出这个方法是做什么的。函数名表示了函数的功能,如果它却是做别的用途的,那就会误导别人。
  
  <?phpfunctiongetNBDay($d){switch($d){case5:case6:case7:return1;default:return($d+1);}}$day=5;$nextDay=getNBDay($day);echo("Nextdayis:".$nextDay." ");?>
  
  例2则给出了使用良好命名方式的代码。重新命名函数是为了更好的反映它们的功能。变量也重新命名为描述性的。只有一个在循环中的$i还使用短的变量名。尽管有些人不同意,短变量名在循环中是请允许的——甚至更好些,因为它们清晰的起到了指针的功能。
  
  <?phpdefine('MONDAY',1);define('TUESDAY',2);define('WEDNESDAY',3);define('THURSDAY',4);define('FRIDAY',5);define('SATURDAY',6);define('SUNDAY',7);/***@param$dayOfWeek*@returnintDayofweek,with1beingMondayandsoon.*/functionfindNextBusinessDay($dayOfWeek){$nextBusinessDay=$dayOfWeek;switch($dayOfWeek){caseFRIDAY:caseSATURDAY:caseSUNDAY:$nextBusinessDay=MONDAY;break;default:$nextBusinessDay+=1;break;}return$nextBusinessDay;}$day=FRIDAY;$nextBusDay=findNextBusinessDay($day);echo("Nextdayis:".$nextBusDay." ");?>
  
  我鼓励你在函数中分隔长的条件给函数命名,以便于描述这个条件。(玉米:这句话啥意思?5555)这个技巧会让你的代码容易阅读和扩展,因此它可以被抽象复用。如果条件发生了改变,这样也会很容易更新函数.由于方法有一个见名知义的名字,化码就不会失去它本来的意思或者变得难以理解。
  
  使用更少的代码
  
  编写代码、解决问题是一种容易的事情。当你解决一个正在发生的问题,编呀编,写呀写,你的方法越来越长。只要你回头使用更少的代码来重构,就是过了很久也没什么问题。
  
  重构是个好主意,但你应该养成第一次就写出更短小精悍代码的习惯。在一个窗口上(玉米:不用翻页)就能看全的短小函数更容易理解。要是一个函数长出了窗口,就很难理解了,因为你不能快速的从头到脚的浏览整个代码。
  
  当构思一个方法的时候,你还应该养成一个让它们只做一件事情的习惯。以下因素写代码时应常注意。第一,只做一件事情的函数更易于复用。第二,这样的函数测试更方便。第三,这样的函数好读易懂方便改——如果必要的话——让它们尽可能的简单吧。
  
  坏习惯:过长的函数(很多时候)
  
  例三是过长函数的表现。它不知道自己要做什么。它做太多的事情,所以没有集成化。它更难以理解,不好Debug和测试。它遍历文件建立列表,它给对象赋值,它做一些计算,……它耕田,它浇水,甚至做更多事情。(^_^)
  
  例三.坏习惯:过长函数
  
  <?phpfunctionwriteRssFeed($user){//GettheDBconnectioninformation//lookuptheuser'spreferences...$link=mysql_connect('mysql_host','mysql_user','mysql_password')ORdie(mysql_error());//Query$perfsQuery=sprintf("SELECTmax_storiesFROMuser_perfsWHEREuser='%s'",mysql_real_escape_string($user));$result=mysql_query($query,$link);$max_stories=25;//defaultitto25;if($row=mysql_fetch_assoc($result)){$max_stories=$row['max_stories'];}//gogetmydata$perfsQuery=sprintf("SELECT*FROMstoriesWHEREpost_date='%s'",mysql_real_escape_string());$result=mysql_query($query,$link);$feed="<rssversion="2.0">"."<channel>"."<title>MyGreatFeed</title>"."<link>http://www.example.com/feed.xml</link>"."<description>Thebestfeedintheworld</description>"."<language>en-us</language>"."<pubDate>Tue,20Oct200810:00:00GMT</pubDate>"."<lastBuildDate>Tue,20Oct200810:00:00GMT</lastBuildDate>"."<docs>http://www.example.com/rss</docs>"."<generator>MyFeedGenerator</generator>"."<managingEditor>editor@example.com</managingEditor>"."<webMaster>webmaster@example.com</webMaster>"."<ttl>5</ttl>";//buildthefeed...while($row=mysql_fetch_assoc($result)){$title=$row['title'];$link=$row['link'];$description=$row['description'];$date=$row['date'];$guid=$row['guid'];$feed.="<item>";$feed.="<title>".$title."</title>";$feed.="<link>".$link."</link>";$feed.="<description>".$description."</description>";$feed.="<pubDate>".$date."</pubDate>";$feed.="<guid>".$guid."</guid>";$feed.="</item>";}$feed.="</rss";//writethefeedouttotheserver...echo($feed);}?>
  
  要是你再加更多东西到这个函数里,它会很快变得难以维护。
  
  好习惯:可管理,集成化的函数
  
  <?phpfunctioncreateRssHeader(){return"<rssversion="2.0">"."<channel>"."<title>MyGreatFeed</title>"."<link>http://www.example.com/feed.xml</link>"."<description>Thebestfeedintheworld</description>"."<language>en-us</language>"."<pubDate>Tue,20Oct200810:00:00GMT</pubDate>"."<lastBuildDate>Tue,20Oct200810:00:00GMT</lastBuildDate>"."<docs>http://www.example.com/rss</docs>"."<generator>MyFeedGenerator</generator>"."<managingEditor>editor@example.com</managingEditor>"."<webMaster>webmaster@example.com</webMaster>"."<ttl>5</ttl>";}functioncreateRssFooter(){return"</channel></rss>";}functioncreateRssItem($title,$link,$desc,$date,$guid){$item.="<item>";$item.="<title>".$title."</title>";$item.="<link>".$link."</link>";$item.="<description>".$description."</description>";$item.="<pubDate>".$date."</pubDate>";$item.="<guid>".$guid."</guid>";$item.="</item>";return$item;}functiongetUserMaxStories($db_link,$default){$perfsQuery=sprintf("SELECTmax_storiesFROMuser_perfsWHEREuser='%s'",mysql_real_escape_string($user));$result=mysql_query($perfsQuery,$db_link);$max_stories=$default;if($row=mysql_fetch_assoc($result)){$max_stories=$row['max_stories'];}return$max_stories;}functionwriteRssFeed($user){//GettheDBconnectioninformation$settings=parse_ini_file("rss_server.ini");//lookuptheuser'spreferences...$link=mysql_connect($settings['db_host'],$settings['user'],$settings['password'])ORdie(mysql_error());$max_stories=getUserMaxStories($link,25);//gogetmydata$newsQuery=sprintf("SELECT*FROMstoriesWHEREpost_date='%s'",mysql_real_escape_string(time()));$result=mysql_query($newsQuery,$link);$feed=createRssHeader();$i=0;//buildthefeed...while($row=mysql_fetch_assoc($result)){if($i<$max_stories){$title=$row['title'];$link=$row['link'];$description=$row['description'];$date=$row['date'];$guid=$row['guid'];$feed.=createRssItem($title,$link,$description,$date,$guid);$i++;}else{break;}}mysql_close($link);$feed.=createRssFooter();//writethefeedouttotheserver...echo($feed);}?>
  
  把长函数分割会导致效率降低,所以要注意,这个好习惯不要使用过度。这样做可能也会引起阅读性差,跟原来人家是一个整体时没什么区别。
  
  注释代码
  
  注释你的代码有时就像你刚着手写代码一样困难。明确注释内容很棘手,因为他要写出代码要做什么。注释变量是一个好主意。在函数头部注释可能不太明显时,就可以告诉阅读者函数要什么参数,有什么返回以及主要的意图。
  
  通常大家会注释代码是做什么的,但这并不必要。如果代码让人困惑以至于你不得不写注释说它是做什么的,这就提示你应该重写它,使它更好懂。命名良好、更加短小、组织合理的代码习惯会让你的代码用不着注释就拥有很高的可读性。
  
  
    黑客防线网安服务器维护方案本篇连接:http://www.rongsen.com.cn/show-17620-1.html
网站维护教程更新时间:2012-09-21 05:22:24  【打印此页】  【关闭
我要申请本站N点 | 黑客防线官网 |  
专业服务器维护及网站维护手工安全搭建环境,网站安全加固服务。黑客防线网安服务器维护基地招商进行中!QQ:29769479

footer  footer  footer  footer