站長(zhǎng)資訊網(wǎng)
        最全最豐富的資訊網(wǎng)站

        如何寫出優(yōu)雅耐看的PHP代碼?淺談書寫規(guī)范

        如何寫出優(yōu)雅耐看的PHP代碼?本篇文章帶大家了解一下PHP代碼的基本書寫規(guī)范和框架規(guī)范,了解它們讓你的PHP代碼優(yōu)雅一個(gè)檔次!

        如何寫出優(yōu)雅耐看的PHP代碼?淺談書寫規(guī)范

        引言

        今天老王同學(xué)跟我說,他的代碼好糟糕,像一坨xiang。問我要怎么

        提高自己的代碼質(zhì)量,讓自己代碼看得順眼一點(diǎn),舒服一點(diǎn), 就像

        看到大長(zhǎng)腿MM,兩眼放光那種。

        于是我: 你先這樣,然后這樣,然后再那樣。。。。。。

        老王同學(xué): 別鬧, 到底是哪樣?

        好的, 我要開始裝13了。。。

        如何寫出優(yōu)雅耐看的PHP代碼?淺談書寫規(guī)范

        基本規(guī)范

        先說一下最基本的東西:

        • 變量名使用駝峰命名。不懂的單詞不要用拼音,而是要查詞典找到對(duì)應(yīng)的單詞。

        • 常量命名使用大寫下劃線方式命名。如:SYSTEM_EROOR = 50000

        • 縮進(jìn)使用Tab鍵,不要打一堆空格做縮進(jìn)。

        • 類名首字母大寫駝峰命名,需要見名知其意,注釋說明這個(gè)類的功能。例如:

        如何寫出優(yōu)雅耐看的PHP代碼?淺談書寫規(guī)范

        • 方法名駝峰命名,方法行數(shù)盡量控制在80行左右,注釋說明函數(shù)干嘛用的。

        如何寫出優(yōu)雅耐看的PHP代碼?淺談書寫規(guī)范

        • 花括號(hào)獨(dú)占一行,例如:

        如何寫出優(yōu)雅耐看的PHP代碼?淺談書寫規(guī)范

        • foreach慎用引用,例如以下代碼會(huì)有問題:

        如何寫出優(yōu)雅耐看的PHP代碼?淺談書寫規(guī)范

        預(yù)期結(jié)果是輸出: 2 4 6,實(shí)際結(jié)果是2 4 4, 至于為什么可 以看我之前的文章: PHP中&符號(hào)你真的了解嗎?。 可以使用array_walk`方法避免這個(gè)問題, 示例:

        如何寫出優(yōu)雅耐看的PHP代碼?淺談書寫規(guī)范

        • 避免if, elese嵌套過深,很多嵌套可以通過提前終止來消除, 舉個(gè)簡(jiǎn)單的例子:

        如何寫出優(yōu)雅耐看的PHP代碼?淺談書寫規(guī)范

        建議使用第二種方式,不符合條件的直接返回,剩下的就是符號(hào)條件的,那么避免了在if里面寫很多代碼。

        • 多個(gè)if/else使用switch來替代,PHP8.0版本可以使用match更為簡(jiǎn)潔。

        • phpstorm中安裝SonarLint插件。如果你寫的代碼出現(xiàn)虛線,說明不太理想,那么可以根據(jù)提示修改,相信有強(qiáng)迫癥的同學(xué)一定會(huì)改,久而久之代碼就很規(guī)范了。例如:

        如何寫出優(yōu)雅耐看的PHP代碼?淺談書寫規(guī)范

        方法未使用,方法名不規(guī)范已經(jīng)告訴你了,可以快捷修改,也可以自己修改。

        框架規(guī)范

        • 前面說得都是比較基礎(chǔ)的東西,接下來才是主要的內(nèi)容。

        • 相信很多同學(xué)都用過常用的thinkphplaravelyii等流行框架之一。

        • 這些框架都是MVC架構(gòu)的,看過很多人的代碼,要么把業(yè)務(wù)邏輯寫在控制器里面,要么寫在Model里面, 寫在Model里面相比寫控制器里面的還相對(duì)好一點(diǎn)。其實(shí)對(duì)于大型項(xiàng)目都不太友好。

        • 下文以Laravel框架為例。

        參數(shù)驗(yàn)證

        • API需要進(jìn)行參數(shù)驗(yàn)證,但是參數(shù)驗(yàn)證寫在哪里比較優(yōu)雅呢?可能很多人在controller定義規(guī)則,然后在調(diào)用驗(yàn)證方法,那么驗(yàn)證那段代碼將在每個(gè)API里面出現(xiàn),例如我同事寫的。

        如何寫出優(yōu)雅耐看的PHP代碼?淺談書寫規(guī)范

        • 這段代碼在每個(gè)API里面均會(huì)出現(xiàn)一次,豈不是很啰嗦,那么如何解決呢?

        如何寫出優(yōu)雅耐看的PHP代碼?淺談書寫規(guī)范

        • 在Laravel的http目錄下建立一個(gè)Requsts目錄,用于存放請(qǐng)求的參數(shù)驗(yàn)證類。建立一個(gè)BaseRequest類:

        如何寫出優(yōu)雅耐看的PHP代碼?淺談書寫規(guī)范

        比如登錄需要參數(shù)驗(yàn)證再建立一個(gè)LoginRequest類繼承這個(gè)BaseRequest

        如何寫出優(yōu)雅耐看的PHP代碼?淺談書寫規(guī)范

        • 使用的時(shí)候只要在Controller的方法中注入這個(gè)請(qǐng)求類即可。

        如何寫出優(yōu)雅耐看的PHP代碼?淺談書寫規(guī)范

        這里獲取請(qǐng)求參數(shù)的時(shí)候會(huì)對(duì)表單進(jìn)行驗(yàn)證,否則參數(shù)驗(yàn)證失敗會(huì)調(diào)用剛剛Request積累定義的方法拋Json異常,返回信息給客戶端。

        控制器

        控制器的主要工作負(fù)載獲取請(qǐng)求數(shù)據(jù)和返回內(nèi)容,不應(yīng)做

        贊(0)
        分享到: 更多 (0)
        網(wǎng)站地圖   滬ICP備18035694號(hào)-2    滬公網(wǎng)安備31011702889846號(hào)
        主站蜘蛛池模板: 国产精品久久久久9999高清| 国产乱人伦偷精品视频| 国产精品成人一区二区| 久久精品国产亚洲AV香蕉| 久久精品无码一区二区三区免费 | 第一福利永久视频精品| 四虎国产精品成人| 国产精品自产拍在线18禁| 久久九九亚洲精品| 99re这里只有精品6| 国内揄拍高清国内精品对白| 综合在线视频精品专区| 三级国产精品| 蜜臀AV无码国产精品色午夜麻豆| 国产精品自产拍在线观看花钱看 | 九九精品成人免费国产片| 国产伦精品一区二区三区| 自拍偷自拍亚洲精品被多人伦好爽| 精品多毛少妇人妻AV免费久久| 四虎国产精品免费久久5151| 国产成人精品免费视| 99精品热这里只有精品 | 日本精品在线视频| 国产精品久久久久aaaa| 国产精品福利在线观看| 999精品在线| 国产精品电影在线观看| 国产精品久久网| 久久久久久久99精品免费观看| 久久精品无码一区二区三区| 中文精品一卡2卡3卡4卡| 91精品国产91久久久久久| 欧美巨大黑人精品videos| 伊人久久大香线蕉精品| 国产精品国产AV片国产| 国亚洲欧美日韩精品| 久久亚洲精品无码播放| 四虎精品成人免费视频| 中文字幕精品亚洲无线码二区 | 精品视频在线观看你懂的一区| 国产精品无码一区二区在线 |