培養自己的php編碼規範_php技巧

來源:互聯網
上載者:User

為什麼我們要培養自己的編碼規範?

我們寫代碼的時候,一個好的編碼規範,對我們來說能夠起到很多意向不到的效果。至少會有一下的好處:

1、提高我們的編碼效率。整齊劃一的代碼方便我們進行複製粘貼嘛!
2、提高代碼的可讀性。
3、顯示我們專業。別人看到了我們的代碼,發現整個代碼的書寫流程都整齊劃一,瞬間逼格就上去了!
4、方便團隊協同工作。大家使用同一的規範,這樣就消除了五花八分的書寫方式,同一協調!

編碼規範包含兩大塊,代碼規範和注釋規範

其實我們所寫的php指令碼,其實也就是由兩大塊組成的,即對代碼的書寫、對代碼的注釋!不同的架構,甚至不同的公司,對這方面都會有所不同,這裡只是已將之言,僅僅是對自己的書寫規範進行一個總結!希望能對其他的朋友以啟示

1、代碼的書寫規範

檔案夾的命名:

檔案夾同一使用小寫字母。如存放控制器的檔案夾,直接命名為controller即可

檔案的命名:

如果是類檔案的話,那麼檔案的命名應該同類名稱保持一致,統一使用大駝峰。如Session.class.php , 對應類名稱為Session,
如果是普通的工具指令碼,那麼統一使用小駝峰,如common.php

類名稱的命名:

類名稱同一使用大駝峰,Cookie類

方法名的命名:

統一使用小駝峰,一般使用 動詞 + 名次 的形式來描述該方法的功能,如sendMessage,傳送簡訊。
在物件導向中,遵循同樣的規則,但是個別地方有所區別:

public getUserName()protected _getTotalAmount()private _setBlanceAmount()

變數的命名規範:

關於變數,我們需要多說幾點:
1、無論在物件導向還是非物件導向的文法中,變數統一使用小駝峰,如:$workYears。
但是在物件導向中又有所不同,public 、 protected 、 private ,protected或者private屬性的時候,前面加上了 _ 作為區別

public $startPosition = 1;protected $_salaryAmount =1000;private $_sex = 'formale';

2、如果是常量的話,統一使用大寫,中間使用底線進行分割。

define('CURRENT_SCRIPT', 'index.php');const TRANSACTION_TYPE = 'income';

3、全域變數,使用大駝峰,首碼加上 _ ,所有的單字首大寫。因為知道一個變數的範圍是非常重要的,所以局部變數和全域變數應該很明顯的進行分開!

$_System_Config;

$_Root_Path;

縮排符

關於編碼的縮排符號,我們統一使用定位字元縮排!也許有的人會問為什麼不適用空格縮排的呢?
原因很簡單,大部分的編輯器都支援定位字元等於多少個空格,而使用空格就沒得調了!

運算子號

所有的兩元運算子號,都應該前後使用空格進行

$name = 'zero';$age > 18 ? 'adult' : 'children';

常見的流程語句規劃

我們約定,所有的流程語句的花括弧都單獨佔據一行。理由:如果遇到較為複雜的商務邏輯,花括弧會出現很多的嵌套,這樣一來我們會混淆個個對應的花括弧!

1、分支語句

if($age >= 18 && $age <= 30) {  echo 'young man';}else if($age > 30 && $age <= 60){  echo 'middle aged';}else{  echo 'old man';}//下面這段代碼高手我們一個問題,在if語句中,即使在可以不要花括弧的情況下,花括弧也是要寫上的if($age > 60){  echo 'I am very old';}switch($status){  case 'forbiden':    echo 'login forbidden';    break;      case 'normal':    echo 'login in';    break;      default:    echo 'status is wrong' :    break;}

2、迴圈語句

while($condition){  statesments......;}foreach($arrayList as $arrayKey => $arrayItem){  states......;}do{  statements......;  }while($condition)for($start; condition; changenumber){  statements......;}

2、注釋的書寫規範

很多人說好的代碼是不需要注釋的,其實,個人認為這是一句很扯淡的話(也可能他是對的,除非整個團隊就他一個人,他包辦了一切,不用看別人的代碼)。

個人的觀點是:多寫注釋,無論是對團隊的其他人,還是對自己都是非常友好的!

根據個人的經驗來看,注釋至少有以下幾個作用:

1、有利於提高代碼的可讀性,畢竟讀你的注釋要比讀你的代碼要容易的多!
2、有利於規劃自己的代碼布局!之所以這麼說,是因為和代碼注釋的種類有關。“有利於代碼的布局”,這種看著有點懸的事,光說是說不明白的,我們需要實實在在的例子做支撐!
3、由於我們的注釋規範是按照phpdocumentor的要求,所以通過這個工具,還可以產生一份對代碼的總體說明,相當於一個使用說明書!g

代碼注釋的種類

1、塊注釋
塊注釋,個人認為主要用在了三個地方。對php指令碼的描述、對一個大的功能模組的描述、在一行之內不能寫完注釋的時候,也應該放在塊注釋中

2、行注釋
行注釋,個人認為他是配合塊注釋進行工作的!一般用於描述一個大的功能模組的具體細節!

實戰的案例

關於phpdocumentor文法的具體使用細節,這裡就不多說了,官網上說的再清楚不過了

從上面的例子中我們可以看一下代碼的布局大致是怎麼回事,但是還需要我們在實踐中慢慢摸索

下面附上一些php的編程規範,給大家參考下

一、檔案標記:

 1.所有php檔案,其代碼標記均採用完整php標籤,不建議使用短標籤(短標籤容易和xml混淆,php從5.4開始預設不支援短標記)。

 2.對於只有php的代碼檔案,建議省略結尾處的‘?>'。這是為了防止多餘的空格或其他字元影        響到代碼。

二、檔案和目錄命名

 1.程式檔案名稱和目錄名均採用有意義的英文命名,不使用拼音和無意義的字母,只允許出現字母、數字、底線和中劃線字  符,同時必須以‘.php'結尾(模板檔案除外),多個詞間使用駝峰命名法。

    例://類統一採用:DemoTest.class.php

          //介面統一採用:DemoTest.interface.php

          //其他按照各自的方式:demoTest.{style}.php

三、檔案目錄結構

規範的目錄結構有助於團隊協作開發和後期維護。

——app            //獨立的應用

——class          //單個的類檔案,共用的類檔案

——conf/inc    //設定檔或目錄

——data          //資料檔案或目錄

——doc           //程式相關文檔

——htdocs       //document_root

——images       //所有圖片檔案存放路徑

——css            //css檔案

——js               //js檔案

——lib              //共用類庫

——template    //模板檔案

——tmp            //臨時檔案目錄

——cache    //快取檔案

——session  //SESSION檔案

——template_c    //編譯後的模板檔案

——other

——upload      //上傳檔案

——manage    //後台管理檔案目錄

四、命名規範

1.變數命名:php中變數區分大小寫,一個有效變數名由數字、字母或底線開頭,後面跟任意數量的字母、數字、底線。

    a)程式整體以駝峰命名法,以小寫字母開始,同時命名要有意義。(function displayName())

    b)PHP全域變數索引值兩邊都有‘_',中間用駝峰命名法命名。($_GLOBAL['_beginTime_'])

    c)普通變數整體採用駝峰命名法,建議在變數前加表示類型的首碼。不確定類型的以大寫字元開頭。

    d)函數名要盡量有意義,盡量縮寫。

2.類及介面命名:

    a)以大寫字母開頭。

    b)多個單片語成的變數名,單詞之間不用間隔,各個單字首大寫。

    c)類名與類檔案名稱保持一致。

    d)程式中所有的類名唯一。

    e)抽象類別應以Abstract開頭。

    介面命名規則:

        i)採用和類相同的命名規則,但在其命名前加‘i'字元,表示介面。

        ii)盡量保持和實現它的類名一致。

3.資料庫命名:在資料庫相關命名中,一律不出現大寫。

    a)表名均使用小寫字母。

    b)表名使用同一的首碼且首碼不可為空。

    c)對於多個單片語成的表名,使用‘_'間隔。

    d)表欄位命名規則。

            i)全部使用小寫字母。

            ii)多個單詞不用底線分割。

            iii)給常用欄位加上表名首字母做首碼。

            iv)避免使用關鍵字和保留字。

五、注釋規範

1.程式注釋:寫在代碼前面而不是後面,單行代碼按照習慣寫在代碼尾部;大段注釋採用/**/的方式,通常為檔案或函數的頂部,代碼內部使用'//';注釋不宜太多;代碼注釋應該描述為什麼而不是做什麼,給代碼閱讀者提供最主要的資訊。

2.檔案注釋:檔案注釋一般放在檔案的頂部,包括本程式的描述、作者、項目名稱、檔案名稱、時間日期、版本資訊、重要的使用說明(類的調用,注意事項等)。版本更改要修改版本號碼,並加上mofify注釋。

3.類和介面注釋:按照一般的習慣,一個檔案只包含一個類。

4.方法和函數注釋:方法和函數的注釋寫在前面,通常需要表明資訊的主要可見度、參數類型和傳回值類型。

    /**

    *    串連資料庫

    *    @param string $dbhost    資料庫伺服器地址

    *    @param string $dbuser    資料庫使用者名稱

    *    @param string $dbpwd    資料庫密碼

    */

六、代碼風格

1.縮排和空格:使用4個空格做為縮排,不使用Tab鍵;變數賦值時,等號兩邊留出空格。($url = '$_GET['url']';)

2.語句斷行:盡量保證程式語句一行即一句;盡量不要使一行的代碼過長,80個字元以內;如果一行的代碼太長,請使用類似於‘.='方式斷行串連;執行資料庫的sql語句操作時,盡量不要再函數內寫sql語句,而先用變數定義sql語句,然後在執行操作的函數中調用定義的變數。

3.更好的習慣:在代碼中使用下面列舉的方法,可以使代碼更優雅。

        1):多使用php中已經存在的常量,而不要自己定義。

            例://換行

                  echo $msg."\r\n";

                  echo $msg,PHP_EOL;

                php中PHP_EOL是一個預定義常量,表示一行結束,隨著所使用系統不同,使用PHP_EOL代碼可移植性更高

        2):在echo中使用逗號做串連符,比用‘.'做串連符代碼更美觀。

        3):單引號的效率高於雙引號,但二者在使用上有區別,學會使用printf函數。

            例://echo

                echo  '每個'.$scholl.'大約有'.floor($avg).'個學生';

                  //printf

               $format = '每個%s大於有$d個學生';

                printf($format,$school,$avg);

        4)  :詳細的注釋

        5):不要 濫用文法糖,文法糖就是語言中的潛規則,即不具備普遍代表性的文法。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.