日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
經(jīng)驗分享:PHP編程的5個良好習(xí)慣(一)

學(xué)習(xí)良好的編程習(xí)慣能夠提高代碼質(zhì)量和效率。像其他語言一樣,開發(fā)人員可以用 PHP編寫出各種質(zhì)量級別的代碼。根據(jù)具體的情況,一般的開發(fā)人員往往比優(yōu)秀的開發(fā)人員的效率低 10%~20%。優(yōu)秀的開發(fā)人員的效率更高,因為他們擁有豐富的經(jīng)驗和良好的編程習(xí)慣。不良的編程習(xí)慣將會影響到效率。本文通過展示一些良好的編程習(xí)慣,幫助您成為更優(yōu)秀的程序員。

額爾古納網(wǎng)站制作公司哪家好,找創(chuàng)新互聯(lián)!從網(wǎng)頁設(shè)計、網(wǎng)站建設(shè)、微信開發(fā)、APP開發(fā)、響應(yīng)式網(wǎng)站設(shè)計等網(wǎng)站項目制作,到程序開發(fā),運營維護。創(chuàng)新互聯(lián)于2013年創(chuàng)立到現(xiàn)在10年的時間,我們擁有了豐富的建站經(jīng)驗和運維經(jīng)驗,來保證我們的工作的順利進行。專注于網(wǎng)站建設(shè)就選創(chuàng)新互聯(lián)。

這些良好的編程習(xí)慣不僅能提高效率,還能讓您編寫出在應(yīng)用程序的整個生命周期中易于維護的代碼。編寫出來的代碼可能需要大量的維護;應(yīng)用程序的維護是一筆很大的開支。養(yǎng)成良好的編程習(xí)慣能夠提高設(shè)計質(zhì)量(比如模塊化),從而使代碼更加容易理解,因此維護就更加容易,同時也降低維護成本。

不良的編程習(xí)慣會造成代碼缺陷,使其難以維護和修改,并且很可能在修改時又引入其他缺陷。以下是 5 個良好的編程習(xí)慣,能夠幫助 PHP 代碼避免這些缺陷:

1. 使用良好的命名

使用良好的命名是最重要的編程習(xí)慣,因為描述性強的名稱讓代碼更加容易閱讀和理解。代碼是否好理解取決于是否能在未來維護它。即便代碼不帶有注釋,如果它很容易理解,將大大方便日后的更改。這個習(xí)慣的目標是讓您編寫的代碼像書本一樣容易閱讀和理解。

不良習(xí)慣:含糊的或無意義的名稱

清單 1 中的代碼包含過短的變量名、難以辨認的縮寫詞,并且方法名不能反映該方法的功能。如果方法名給人的感覺是它應(yīng)該做這件事情,而實際中它卻做另外的事情,這將帶來嚴重的問題,因為它會誤導(dǎo)人。

清單 1. 不良習(xí)慣:含糊的或無意義的名稱

 
 
 
  1. function getNBDay($d)  
  2. {  
  3. switch($d) {  
  4. case 5:  
  5. case 6:  
  6. case 7:  
  7. return 1;  
  8. default:  
  9. return ($d + 1);  
  10. }  
  11. }  
  12. $day = 5;  
  13. $nextDay = getNBDay($day);  
  14. echo ("Next day is: " . $nextDay . "\n");  
  15. ?> 

復(fù)制代碼良好習(xí)慣:說明性強并且簡潔的名稱

清單 2 中的代碼體現(xiàn)了良好的編程習(xí)慣。新的方法名具有很強的說明性,反映了方法的用途。同樣,更改后的變量名也更具說明性。惟一的保持最短的變量是 $i,在本清單中,它是一個循環(huán)變量。盡管很多人不贊同使用過短的名稱,但在循環(huán)變量中使用還是可以接受的(甚至有好處),因為它明確表明了代碼的功能。

清單 2. 良好習(xí)慣:說明性強并且簡潔的名稱

 
 
 
  1. define ('MONDAY', 1);  
  2. define ('TUESDAY', 2);  
  3. define ('WEDNESDAY', 3);  
  4. define ('THURSDAY', 4);  
  5. define ('FRIDAY', 5);  
  6. define ('SATURDAY', 6);  
  7. define ('SUNDAY', 7);  
  8. /*  
  9. * @param $dayOfWeek  
  10. * @return int Day of week, with 1 being Monday and so on.  
  11. */ 
  12. function findNextBusinessDay($dayOfWeek)  
  13. {  
  14. $nextBusinessDay = $dayOfWeek;  
  15. switch($dayOfWeek) {  
  16. case FRIDAY:  
  17. case SATURDAY:  
  18. case SUNDAY:  
  19. $nextBusinessDay = MONDAY;  
  20. break;  
  21. default:  
  22. $nextBusinessDay += 1;  
  23. break;  
  24. }  
  25. return $nextBusinessDay;  
  26. }  
  27. $day = FRIDAY;  
  28. $nextBusDay = findNextBusinessDay($day);  
  29. echo ("Next day is:" . $nextBusDay . "\n");  
  30. ?> 

復(fù)制代碼我們鼓勵您將大的條件拆分為一個方法,然后用能夠描述該條件的名字命名方法。這個技巧能夠提高代碼的可讀性,并且能夠?qū)l件具體化,使之能夠被提取甚至重用。如果條件發(fā)生變化,更新方法也很容易。因為方法擁有一個有意義的名字,所以它能反映代碼的用途,讓代碼更容易閱讀。

#p#

2. 分成更小的部分

專心解決一個問題之后再繼續(xù)編程,這樣會讓您更輕松。在解決一個緊急的問題時,如果繼續(xù)編程,會使函數(shù)越來越長。從長遠來說,這并不是一個問題,但您要記得回過頭來將它重構(gòu)為更小的部分。

重構(gòu)是個不錯的主意,但您應(yīng)該養(yǎng)成編寫更短、功能更集中的代碼。短的方法能夠在一個窗口中一次看完,并且容易理解。如果方法過長,不能在一個窗口中一次看完,那么它就變得不容易理解,因為您不能快速地從頭到尾了解它的整個思路。

構(gòu)建方法時,您應(yīng)該養(yǎng)成這樣的習(xí)慣,讓每個方法只完成一件事情。這個習(xí)慣很好,因為:首先,如果方法只完成一件事情,那么它就更容易被重用;其次,這樣的方法容易測試;第三,這樣的方法便于理解和更改。

不良習(xí)慣:過長的方法(完成很多件事情)

清單 3 展示了一個很長的函數(shù),其中存在很多問題。它完成很多件事情,因此不夠緊湊。它也不便于閱讀、調(diào)試和測試。它要做的事情包括遍歷一個文件、構(gòu)建一個列表、為每個對象賦值、執(zhí)行計算等等。

清單 3. 不良習(xí)慣:過長的函數(shù)

 
 
 
  1. function writeRssFeed($user)  
  2. {  
  3. // Get the DB connection information  
  4. // look up the user's preferences...  
  5. $link = mysql_connect('mysql_host', 'mysql_user', 'mysql_password')  
  6. OR die(mysql_error());  
  7. // Query  
  8. $perfsQuery = sprintf("SELECT max_stories FROM user_perfs WHERE user= '%s'",  
  9. mysql_real_escape_string($user));  
  10. $result = mysql_query($query, $link);  
  11. $max_stories = 25; // default it to 25;  
  12. if ($row = mysql_fetch_assoc($result)) {  
  13. $max_stories = $row['max_stories'];  
  14. }  
  15. // go get my data  
  16. $perfsQuery = sprintf("SELECT * FROM stories WHERE post_date = '%s'",  
  17. mysql_real_escape_string());  
  18. $result = mysql_query($query, $link);  
  19. $feed = "" .  
  20. "" .  
  21. "My Great Feed" .  
  22. "http://www.example.com/feed.xml" .  
  23. "The best feed in the world" .  
  24. "en-us" .  
  25. "Tue, 20 Oct 2008 10:00:00 GMT" .  
  26. "Tue, 20 Oct 2008 10:00:00 GMT" .  
  27. "http://www.example.com/rss" .  
  28. "MyFeed Generator" .  
  29. "editor@example.com""webmaster@example.com" .  
  30. "5";  
  31. // build the feed...  
  32. while ($row = mysql_fetch_assoc($result)) {  
  33. $title = $row['title'];  
  34. $link = $row['link'];  
  35. $description = $row['description'];  
  36. $date = $row['date'];  
  37. $guid = $row['guid'];  
  38. $feed .= "";  
  39. $feed .= "" . $title . "";  
  40. $feed .= "" . $link . "";  
  41. $feed .= " " . $description . "";  
  42. $feed .= "" . $date . "";  
  43. $feed .= "" . $guid . "";  
  44. $feed .= "";  
  45. }  
  46. $feed .= "
  47. // write the feed out to the server...  
  48. echo($feed);  
  49. }  
  50. ?> 

復(fù)制代碼如果多編寫幾個這樣的方法,維護就成了真正的難題了。

良好習(xí)慣:易管理、功能專一的方法

清單 4 將原來的方法改寫為更加緊湊、易讀的方法。在這個示例中,將一個很長的方法分解為幾個短方法,并且讓每個短方法負責(zé)一件事情。這樣的代碼對將來的重用和測試都是大有裨益的。

清單 4. 良好習(xí)慣:易管理、功能專一的方法

 
 
 
  1. function createRssHeader()  
  2. {  
  3. return "" .  
  4. "" .  
  5. "My Great Feed" .  
  6. "http://www.example.com/feed.xml" .  
  7. "The best feed in the world" .  
  8. "en-us" .  
  9. "Tue, 20 Oct 2008 10:00:00 GMT" .  
  10. "Tue, 20 Oct 2008 10:00:00 GMT" .  
  11. "http://www.example.com/rss" .  
  12. "MyFeed Generator" .  
  13. "editor@example.com" .
  14. "webmaster@example.com" .  
  15. "5";  
  16. }  
  17. function createRssFooter()  
  18. {  
  19. return "";  
  20. }  
  21. function createRssItem($title, $link, $desc, $date, $guid)  
  22. {  
  23. $item .= "";  
  24. $item .= "" . $title . "";  
  25. $item .= "" . $link . "";  
  26. $item .= " " . $description . "";  
  27. $item .= "" . $date . "";  
  28. $item .= "" . $guid . "";  
  29. $item .= "";  
  30. return $item;  
  31. }  
  32. function getUserMaxStories($db_link, $default)  
  33. {  
  34. $perfsQuery = sprintf("SELECT max_stories FROM user_perfs WHERE user= '%s'",  
  35. mysql_real_escape_string($user));  
  36. $result = mysql_query($perfsQuery, $db_link);  
  37. $max_stories = $default;  
  38. if ($row = mysql_fetch_assoc($result)) {  
  39. $max_stories = $row['max_stories'];  
  40. }  
  41. return $max_stories;  
  42. }  
  43. function writeRssFeed($user)  
  44. {  
  45. // Get the DB connection information  
  46. $settings = parse_ini_file("rss_server.ini");  
  47. // look up the user's preferences...  
  48. $link = mysql_connect($settings['db_host'], $settings['user'],  
  49. $settings['password']) OR die(mysql_error());  
  50. $max_stories = getUserMaxStories($link, 25);  
  51. // go get my data  
  52. $newsQuery = sprintf("SELECT * FROM stories WHERE post_date = '%s'",  
  53. mysql_real_escape_string(time()));  
  54. $result = mysql_query($newsQuery, $link);  
  55. $feed = createRssHeader();  
  56. $i = 0;  
  57. // build the feed...  
  58. while ($row = mysql_fetch_assoc($result)) {  
  59. if ($i < $max_stories) {  
  60. $title = $row['title'];  
  61. $link = $row['link'];  
  62. $description = $row['description'];  
  63. $date = $row['date'];  
  64. $guid = $row['guid'];  
  65. $feed .= createRssItem($title, $link, $description, $date, $guid);  
  66. $i++;  
  67. } else {  
  68. break;  
  69. }  
  70. }  
  71. mysql_close($link);  
  72. $feed .= createRssFooter();  
  73. // write the feed out to the server...  
  74. echo($feed);  
  75. }  
  76. ?> 

復(fù)制代碼將長方法拆分為短方法也是有限制的,過度拆分將適得其反。因此,不要濫用這個良好的習(xí)慣。將代碼分成大量的片段就像沒有拆分長代碼一樣,都會造成閱讀困難。

由于本文過長,請看下一篇,經(jīng)驗分享:PHP編程的5個良好習(xí)慣(二)

【編輯推薦】

  1. 詳細介紹使用PHP框架的原因
  2. PHP框架之如何學(xué)習(xí)新的PHP框架
  3. PHP新手之如何學(xué)習(xí)PHP的講解
  4. 介紹使用PHP框架的十大理由
  5. PHP新手之學(xué)習(xí)數(shù)組聲明

當(dāng)前標題:經(jīng)驗分享:PHP編程的5個良好習(xí)慣(一)
本文來源:http://www.5511xx.com/article/cccoode.html