值得一看!高級(jí)PHP工程師必備的編碼技巧及思維
閱讀 96055 · 發(fā)布日期 2020-08-24 11:44 · 溫州優(yōu)光網(wǎng)絡(luò)科技有限公司|建站|APP小程序制作|做網(wǎng)站SEO推廣優(yōu)化
【摘要】
推薦:《PHP視頻教程》好的開發(fā)者通常以代碼質(zhì)量來(lái)定義。在軟件行業(yè),寫好的代碼意味著在在測(cè)試,更新,擴(kuò)展或者修復(fù)漏洞中省錢。本文,我將向你展示一些現(xiàn)實(shí)生活中技巧和想法的例子,來(lái)幫助你清理你的邏輯代碼,重構(gòu)它,讓它變得更健壯和模塊化。這些技巧將不僅僅幫助你重構(gòu)你的舊代碼,而且給你一些如何從現(xiàn)在開始寫出簡(jiǎn)潔代碼的好建議。什... 【溫州小程序開發(fā),溫州微信公眾號(hào),平陽(yáng)做網(wǎng)站,平陽(yáng)網(wǎng)站建設(shè)公司,平陽(yáng)小程序商城制作,昆陽(yáng)萬(wàn)全做網(wǎng)站,鰲江水頭小程序,蕭江騰蛟微信公眾號(hào),山門順溪南雁海西南麂鳳臥麻步懷溪網(wǎng)絡(luò)網(wǎng)店服務(wù),政采云網(wǎng)店管理服務(wù)】...
推薦:
《PHP視頻教程》好的開發(fā)者通常以代碼質(zhì)量來(lái)定義。
在軟件行業(yè),寫好的代碼意味著在在測(cè)試,更新,擴(kuò)展或者修復(fù)漏洞中省錢。
本文,我將向你展示一些現(xiàn)實(shí)生活中技巧和想法的例子,來(lái)幫助你清理你的邏輯代碼,重構(gòu)它,讓它變得更健壯和模塊化。
這些技巧將不僅僅幫助你重構(gòu)你的舊代碼,而且給你一些如何從現(xiàn)在開始寫出簡(jiǎn)潔代碼的好建議。
什么是重構(gòu),為什么我們需要它?重構(gòu)是指幫助我們寫簡(jiǎn)潔代碼的方法和步驟。
這對(duì)其他可能閱讀,擴(kuò)展和不需要怎么編輯來(lái)復(fù)用我們代碼的其他開發(fā)者來(lái)說是很重要的。
下面的內(nèi)容將向你展示一些重構(gòu)邏輯代碼,讓它變得更好的例子。
不要在沒有單元測(cè)試的情況下重構(gòu)生產(chǎn)環(huán)境的代碼我的第一條建議是從不在沒有完全進(jìn)行單元測(cè)試的情況下開始重構(gòu)邏輯代碼。
我的理由是:
你將會(huì)以很難有修復(fù)的損壞的功能收尾,因?yàn)槟阋埠茈y指出是哪里損壞了。
因此,如果你要重構(gòu)它,從測(cè)試開始。
保證你準(zhǔn)備重構(gòu)的部分被測(cè)試覆蓋到。
PHPUnit 代碼覆蓋分析.從你代碼最底層開始重構(gòu)看一下下面的圖片。
這是一個(gè)我從 Github 找到的真實(shí)的酒店管理系統(tǒng)項(xiàng)目。
這是一個(gè)開源的項(xiàng)目,可想閉源項(xiàng)目將是糟糕的。
示例:
從底層開始重構(gòu)你看這個(gè)代碼,這里用紅色標(biāo)出了三個(gè)層級(jí)。
最底層應(yīng)該是在第一個(gè) if 條件下被 if/else 包圍的申明。
通常,最底層是集中在單一邏輯處理,比較容易重構(gòu)。
讓你的方法更短,分解它們到更小的方法或者配置文件/DB 表也許在這里,我們可以向下面一樣提煉它到一個(gè)私有方法:
使你的方法更短下一個(gè)深入點(diǎn)將是上傳參數(shù)和加載視圖。
現(xiàn)在,再來(lái)看看在重構(gòu)其他部分之后的 add() 方法。
它變得更加簡(jiǎn)潔,易讀,易于測(cè)試。
示例:
首先重構(gòu)最底層if 申明堅(jiān)持使用大括號(hào)大多數(shù)編程語(yǔ)言都支持單行 if 申明,因?yàn)檫@樣比較簡(jiǎn)單,所以一些開發(fā)就這么使用,但是這樣不便于閱讀,而且容易造成問題,因?yàn)橐粋€(gè)空行就可以中斷條件造成崩潰。
看下下面兩個(gè)示例的不同:
示例: 使用大括號(hào)別使用魔術(shù)數(shù)字或者魔術(shù)字符串:
下個(gè)示例中,你注意到如果房間超過 250 ,會(huì)返回一個(gè)錯(cuò)誤信息。
這里,250 就被認(rèn)為是一個(gè)魔術(shù)數(shù)字。
如果你不是寫這個(gè)的開發(fā)者,很難指出這個(gè)數(shù)字表示什么。
示例:
魔術(shù)數(shù)字為了重構(gòu)這個(gè)方法,我們可以指出 250 表示最大的房間數(shù)。
為了替換硬編碼,我們可以提取它到一個(gè)變量 $maxAvailableRooms 。
現(xiàn)在對(duì)其他開發(fā)者來(lái)說,它變得更易被理解。
示例:
修復(fù)魔術(shù)數(shù)字不要使用 else 申明,如果你不是真的需要:
在相同的 availablerooms() 函數(shù)中,你注意到那個(gè) if 申明, 其中我們可以很容易擺脫 else 部分,而且邏輯保持一致。
示例:
忽略 else 申明使用能夠表示你的方法,變量和測(cè)試的命名在后面的示例中,你會(huì)發(fā)現(xiàn)酒店管理系統(tǒng)有兩個(gè)方法分別是“ index() ”和“ room_m() ”。
對(duì)我來(lái)說,我搞不清它們的目的是什么。
我認(rèn)為它應(yīng)該很容易被理解,如果它們的命名都能夠描述自己。
示例:
不好的方法命名充分利用你的編程語(yǔ)言的功能許多開發(fā)者不會(huì)利用到他們使用的編程語(yǔ)言的全部功能。
很多功能能夠節(jié)約你們的的時(shí)間,而且能夠讓你們的代碼更健壯。
看下下面的示例,注意如何在更少代碼情況下更容易達(dá)到相同的結(jié)果的,通過使用類型提示。
最后,我想提供一些關(guān)于更好編碼的快速提示:
使用新的數(shù)組形式 [ ] 替代舊的 array()。
除非不檢查數(shù)據(jù)類型很重要,否則使用 === 操作符替代 ==。
給公共方法提供簡(jiǎn)短的描述性名稱總是一個(gè)好主意。
私有方法可以使用更長(zhǎng)的名稱,因?yàn)樗鼈兊倪m用范圍比較有限。
僅對(duì)實(shí)現(xiàn)接口的方法使用通用名稱例如 add(),并對(duì)單個(gè)類方法使用描述性名稱例如 addUser() 或 addDocument()。
從類中刪除未使用的方法。
對(duì)返回值為 boolean 等的函數(shù)使用 is/has 前綴:
isAdmin($user),hasPermission($user)。
始終在類方法和屬性中使用訪問修飾符。
注意接口污染:
僅使用用戶可以公開使用的方法。
在公共方法位于頂部的位置組織類方法。
始終在類中應(yīng)用單一職責(zé)的概念。
原文地址:
https://medium.com/@maladdinsayed/advanced-techniques-and-ideas-for-better-coding-skills-d632e9f9675譯文地址:
https://learnku.com/php/t/37900以上就是值得一看!高級(jí)PHP工程師必備的編碼技巧及思維的詳細(xì)內(nèi)容,更多請(qǐng)關(guān)注php中文網(wǎng)其它相關(guān)文章!
微信
分享相關(guān)標(biāo)簽:
php本文轉(zhuǎn)載于:
learnku,如有侵犯,請(qǐng)聯(lián)系[email protected]刪除
上一篇:
教你使用mixphp打造多進(jìn)程異步郵件發(fā)送
下一篇:
詳解VSCode+PHPstudy配置PHP開發(fā)環(huán)境的步驟相關(guān)文章相關(guān)視頻php工程師培訓(xùn)哪家好php工程師培訓(xùn)多少錢php工程師php培訓(xùn)費(fèi)用多少php工程師培訓(xùn)教程內(nèi)容是什么值得一看!高級(jí)PHP工程師必備的編碼技巧及思維數(shù)據(jù)表的連接與新增操作2數(shù)據(jù)表的連接與新增操作1數(shù)組常用函數(shù)-3數(shù)組常用函數(shù)-2 [溫州做網(wǎng)站PHP教程]