• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Maintainable PHP Source Code
 

Maintainable PHP Source Code

on

  • 27,868 views

How to maintain php source code

How to maintain php source code

Statistics

Views

Total Views
27,868
Views on SlideShare
3,826
Embed Views
24,042

Actions

Likes
24
Downloads
177
Comments
1

47 Embeds 24,042

http://blog.wu-boy.com 16507
http://ching119.blogspot.tw 4373
http://www.hack-stuff.com 1825
http://hs-tech.blogspot.tw 478
http://blog.kejyun.com 220
http://feeds2.feedburner.com 161
http://www.hst.tw 97
http://ngarmchannel.blogspot.tw 53
http://eoffice.alltop.com.tw 47
http://163.17.136.249 46
http://ngarmchannel.blogspot.hk 22
http://ching119.blogspot.com 19
http://61.221.242.38 17
http://10.0.1.42 15
http://jerry54010.kd.io 14
http://www.nutc-imac.tk 13
http://1423369845924834971_160058cba0b232a461deace2657d6c33c529adcc.blogspot.com 11
http://work.gcosme.tw 11
http://ngarmchannel.blogspot.com 9
http://tw.pinggu.baidu.com 8
http://webcache.googleusercontent.com 8
http://114.35.16.73 8
http://ching119.blogspot.hk 8
http://wse1.baidu.com 8
http://news.google.com 6
http://teach.nutc-life.com 6
http://blog2.wu-boy.com 6
http://localhost 5
http://nutc-imac.tk 5
http://4661814506433396863_9af911a4835cc486975820c3ba5d4b5895712153.blogspot.com 4
http://cloud.feedly.com 4
http://hs-tech.blogspot.com 4
http://feeds.feedburner.com 4
http://192.168.1.59 3
http://www.plurk.com 3
http://www.linkedin.com 2
http://translate.googleusercontent.com 2
http://&_=1397632120944 HTTP 1
http://&_=1397631896609 HTTP 1
http://&_=1397632139008 HTTP 1
http://ching119.blogspot.de 1
http://61.221.242.44 1
http://km.url.com.tw 1
https://www.google.com.tw 1
http://ngarmchannel.blogspot.de 1
http://ching119.blogspot.in 1
http://ching119.blogspot.ca 1
More...

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel

11 of 1 previous next

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
  • Very useful, thanks!
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Maintainable PHP Source Code Maintainable PHP Source Code Presentation Transcript

    • Maintainable PHP Source Code Bo-Yi Wu 吳柏毅 2012.07.21 http://blog.wu-boy.com/
    • 維護 PHP 專案程式碼 為什麼大家需要關心呢 ?
    • 因為我們每天花了很多時間在維護程式碼
    • 維護 PHP 專案程式碼 誰最關心呢 ?
    • 公司員工 : 趕快把程式碼寫完來去看電影公司老闆 : 請給我一個可以擴充性的架構
    • 員工 A: 奇怪這是誰寫的 Code 這麼亂員工 B: 員工 A 寫的架構好像怪怪的 ?
    • 為什麼大家會有這些想法呢?
    • 那是因為沒有共同制定的 Coding Style
    • 沒有好的 Coding Style對於一個專案主管是非常痛苦
    • 那什麼是易於維護的程式碼 Maintainable Code
    • 四項必定要求 非常直覺 容易了解 可擴充性 容易 Debug
    • 進入今日主題Code Style Guide 程式設計師互相溝通的語言
    • 各式各樣的編輯器Tabs vs 4 Spaces
    • 使用 Space 易於閱讀 Diff 程式碼
    • 所以請將編輯器設定為 (Replaces tabs by spaces)4 Spaces 取代 Tabs
    • 程式碼結尾請勿有 多餘的空白
    • 正規取代驗證多餘空白^(.*[^s])?s+$
    • ^(.*[^s])?s+$開頭 結尾
    • ^(.*[^s])?s+$代表 $1 結尾符號
    • ^(.*[^s])?s+$ 結尾無空白
    • ^(.*[^s])?s+$ $1 可有可無
    • ^(.*[^s])?s+$ 結尾為空白
    • Geany Editor
    • 檔案命名
    • 請一律以小寫命名
    • 檔案內容宣告
    • 只使用 <?php 或 <?= 標籤
    • PHP5.4 以後取消 short_open_tag 直接使用 <?= 標籤
    • 檔案結尾請忽略 ?> 標籤
    • 檔案格式
    • use only UTF-8 without BOM for PHP code 避免資料庫連線字元問題
    • 如何寫程式註解 註解上面必須空一行
    • 如何寫函式註解 註解上面必須空一行
    • 變數命名
    • 請使用小寫英文字母或底線
    • 常數命名
    • 請使用大寫英文字母或底線 ( 定義在同一檔案內 )
    • PHP Keywords
    • true, false, nullarray, integer, string
    • 請一律用小寫
    • 條件判斷式(Control Structures)
    • if, for, foreach, while, switch
    • if, for, foreach, while, switch
    • if ($arg === true) { //do something here}elseif ($arg === null) { //do something else here}else { //catch all do something here}
    • 單行條件式過長
    • if (($a == $b) and ($b == $c) or ($a == $e)){ $a = $d;}
    • if($arg === true) { //do something here}elseif($arg === null) { //do something else here}else { //catch all do something here} 條件式 if 括號旁邊請留一個空白
    • If, for, foreach, while, switch
    • <?phpfor ($i = 0; $i < $max; $i++) { //loop here}
    • <?phpfor ($i=0; $i<$max; $i++) { //loop here} 邏輯符號 =,< 左右兩邊請留一個空白
    • If, for, foreach, while, switch
    • <?phpforeach ($iterable as $key => $value) { // foreach body}
    • If, for, foreach, while, switch
    • <?phpwhile ($expr) { // structure body}<?phpdo { // structure body;} while ($expr);
    • If, for, foreach, while, switch
    • switch ($var) { case 0: echo First case, with a break; break; case 1: echo Second case, which falls through; // no break case 2: case 3: echo Third case, return instead of break; return; default: echo Default case; break;}
    • 判斷式內容請勿寫在同一行
    • 替代 if 方案
    • 取代if (isset($var)) { $var = test; }
    • isset($var) and $var = test;
    • if (isset($variable)) { $variable = test1;}else { $variable = test2;} 不建議此寫法
    • $var = isset($var) ? test1 : test2;$var = isset($var) ?: default;
    • 邏輯符號表式
    • 請用 and or取代 && ||讓程式更容易閱讀
    • 此用法僅限於 === 或 !==或 function 回傳值
    • 運算元計算請使用 && 或 ||
    • 邏輯符號左右兩邊 請留一個空白
    • if ($var == false and $other_var != some_value)if ($var === false or my_function() !== false)if ( ! $var)
    • PHP 物件表示
    • /*** Documentation Block Here*/class Session{ // all contents of class // must be indented four spaces public function test() {}}
    • /*** Documentation Block Here*/class Session{ /** * Documentation Block Here */ public function get_flash($name, $data) { $closure = function($a, $b) { // Your closure code here } }}
    • 物件內部變數或函式 務必定義private,protected,public
    • /*** Documentation Block Here*/class Session{ var $test = null; /** * Documentation Block Here */ function get_flash($name, $data) { // Your code here }} 請勿使用 var 定義變數
    • 單引號或雙引號 ?
    • 用單引號更勝於雙引號 ( 只是為了統一 Code Style)
    • 別再相信單引號效能大於雙引號
    • 有興趣請看效能評估http://nikic.github.com/2012/01/09/Disproving-the- Single-Quotes-Performance-Myth.html
    • 字串連接Concatenation
    • $string = my string .$var. the rest of my string; 變數旁邊請留空白
    • $string = my string . $var . the rest of my string;
    • 字串如果過長呢 ? 例如 SQL 語法
    • $sql = "SELECT `id`, `name` FROM `people` " . "WHERE `name` = Susan " . "ORDER BY `name` ASC ";
    • 今天就講到這裡大家有什麼問題
    • 參考資料 PHP Framework Interop Group  PSR­0  PSR­1  PSR­2 Zend Framework Coding Standard for PHP 
    • 謝謝