摘要:將代碼寫(xiě)的簡(jiǎn)潔并且易讀易懂是每一位優(yōu)秀的所應(yīng)該具備的基本功。前幾天在上看到這個(gè)項(xiàng)目,感覺(jué)很有收獲,于是在這里記錄一下。
將代碼寫(xiě)的簡(jiǎn)潔并且易讀易懂是每一位優(yōu)秀的coder所應(yīng)該具備的基本功。
前幾天在github上看到clean-code-php這個(gè)項(xiàng)目,感覺(jué)很有收獲,于是在這里記錄一下。
使用有意義并且可讀的變量名稱Bad:
$ymdstr = $moment->format("y-m-d");
Good:
$currentDate = $moment->format("y-m-d");對(duì)同一只類(lèi)型的變量使用同樣的詞匯
Bad:
getUserInfo(); getUserData(); getUserRecord(); getUserProfile();
Good:
getUser();使用易于查找的命名
Bad:
// 這里的4是什么鬼?? if ($user->access & 4) { // ... }
Good:
class User { const ACCESS_READ = 1; const ACCESS_CREATE = 2; const ACCESS_UPDATE = 4; const ACCESS_DELETE = 8; } if ($user->access & User::ACCESS_UPDATE) { // do edit ... }不要讓讀者猜
Bad:
$l = ["Austin", "New York", "San Francisco"]; for ($i = 0; $i < count($l); $i++) { $li = $l[$i]; doStuff(); doSomeOtherStuff(); // ... // ... // ... // $li 變量代表什么??? dispatch($li); }
Good:
$locations = ["Austin", "New York", "San Francisco"]; foreach ($locations as $location) { doStuff(); doSomeOtherStuff(); // ... // ... // ... dispatch($location); }避免過(guò)深的嵌套
Bad:
function isShopOpen($day) { if ($day) { if (is_string($day)) { $day = strtolower($day); if ($day === "friday") { return true; } elseif ($day === "saturday") { return true; } elseif ($day === "sunday") { return true; } else { return false; } } else { return false; } } else { return false; } }
Good:
function isShopOpen($day) { if (empty($day) && ! is_string($day)) { return false; } $openingDays = [ "friday", "saturday", "sunday" ]; return in_array(strtolower($day), $openingDays); }
Bad:
function fibonacci($n) { if ($n < 50) { if ($n !== 0) { if ($n !== 1) { return fibonacci($n - 1) + fibonacci($n - 2); } else { return 1; } } else { return 0; } } else { return "Not supported"; } }
Good:
function fibonacci($n) { if ($n === 0) { return 0; } if ($n === 1) { return 1; } if ($n > 50) { return "Not supported"; } return fibonacci($n - 1) + fibonacci($n - 2); }不要添加不必要的上下文
如果你的類(lèi)/對(duì)象已經(jīng)說(shuō)明了一些信息,不要在你的變量名和屬性里重復(fù)
Bad:
class Car { public $carMake; public $carModel; public $carColor; //... }
Good:
class Car { public $make; public $model; public $color; //... }參數(shù)初始化時(shí)設(shè)置默認(rèn)值
function create($name = null) { $newName = $name ?: "ABC"; // ... }
設(shè)置默認(rèn)值一個(gè)比較明顯的好處是,當(dāng)對(duì)一個(gè)較早之前已經(jīng)定義好的函數(shù)添加參數(shù)時(shí),將新增的參數(shù)設(shè)置默認(rèn)值可以省得去修改以前使用該函數(shù)的地方。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/25935.html
摘要:超過(guò)三個(gè)參數(shù)會(huì)導(dǎo)致參數(shù)之間的組合過(guò)多,你必須對(duì)每個(gè)單獨(dú)的參數(shù)測(cè)試大量不同的情況。拆分這些函數(shù),可以讓代碼可重用性更高且更易測(cè)試。 函數(shù)參數(shù)不要超過(guò)兩個(gè) 限制函數(shù)的參數(shù)數(shù)量是非常重要的,因?yàn)樗鼓愕暮瘮?shù)更容易測(cè)試。超過(guò)三個(gè)參數(shù)會(huì)導(dǎo)致參數(shù)之間的組合過(guò)多,你必須對(duì)每個(gè)單獨(dú)的參數(shù)測(cè)試大量不同的情況。 沒(méi)有參數(shù)是最理想的情況,一個(gè)或兩個(gè)參數(shù)是可以接受的,三個(gè)以上則是應(yīng)該避免的。這很重要的。如果你...
摘要:統(tǒng)一的編碼規(guī)范編碼規(guī)范往簡(jiǎn)單說(shuō)其實(shí)就是三個(gè)方面換行空格變量命名放在里面,還有一些附加的地方,比如關(guān)鍵字大小寫(xiě),語(yǔ)法糖的使用與等的問(wèn)題。這些都是規(guī)范代碼的重要手段。推廣給你的隊(duì)友團(tuán)隊(duì)項(xiàng)目中,隊(duì)友的配合對(duì)整個(gè)代碼的規(guī)范起著決定性的作用。 1. 統(tǒng)一的編碼規(guī)范 編碼規(guī)范往簡(jiǎn)單說(shuō)其實(shí)就是三個(gè)方面: 換行 空格 變量命名 放在 PHP 里面,還有一些附加的地方,比如關(guān)鍵字大小寫(xiě),語(yǔ)法糖的使用...
摘要:使用和在中,通過(guò)為屬性或方法設(shè)置和關(guān)鍵字可以實(shí)現(xiàn)對(duì)屬性或方法的可見(jiàn)性控制。你的繼承表達(dá)了一個(gè)對(duì)等比如人類(lèi)是動(dòng)物的關(guān)系,不是包含的關(guān)系比如用戶具有用戶詳情你能從基類(lèi)中復(fù)用代碼你想通過(guò)修改全局類(lèi)來(lái)對(duì)所有派生類(lèi)進(jìn)行修改。 使用getter和setter 在 PHP 中,通過(guò)為屬性或方法設(shè)置 public, protected 和 private 關(guān)鍵字可以實(shí)現(xiàn)對(duì)屬性或方法的可見(jiàn)性控制。不過(guò),...
摘要:考慮到函數(shù)表示某種行為,函數(shù)名稱應(yīng)該是動(dòng)詞或短語(yǔ),用以說(shuō)明其背后的意圖以及參數(shù)的意圖。不好的方式好的方式使用條件簡(jiǎn)寫(xiě)。這可能微不足道,但值得一提。 為了保證可讀性,本文采用的音譯而非直意。 簡(jiǎn)介 如果你關(guān)注代碼本身和代碼的編寫(xiě)方式,而不是只關(guān)心它是否能工作,那么你寫(xiě)代碼是有一定的水準(zhǔn)。專業(yè)開(kāi)發(fā)人員將為未來(lái)的自己和其他人編寫(xiě)代碼,而不僅僅只編寫(xiě)當(dāng)前能工作就行的代碼。 在此基礎(chǔ)上,簡(jiǎn)潔代碼...
摘要:是推薦的便于記憶的首字母簡(jiǎn)寫(xiě),它代表了命名的最重要的五個(gè)面對(duì)對(duì)象編碼設(shè)計(jì)原則單一職責(zé)原則開(kāi)閉原則里氏替換原則接口隔離原則依賴反轉(zhuǎn)原則單一職責(zé)原則修改一個(gè)類(lèi)應(yīng)該只為一個(gè)理由。別寫(xiě)重復(fù)代碼這條原則大家應(yīng)該都是比較熟悉了。 SOLID 是Michael Feathers推薦的便于記憶的首字母簡(jiǎn)寫(xiě),它代表了Robert Martin命名的最重要的五個(gè)面對(duì)對(duì)象編碼設(shè)計(jì)原則 S: 單一職責(zé)原則 ...
閱讀 3517·2021-09-27 13:35
閱讀 3557·2019-08-29 17:09
閱讀 2426·2019-08-26 11:30
閱讀 698·2019-08-26 10:32
閱讀 532·2019-08-26 10:23
閱讀 1194·2019-08-26 10:20
閱讀 3150·2019-08-23 15:26
閱讀 3551·2019-08-23 14:33