PHP理想國--程式碼怎麼寫看的更舒服

wking發表於2018-06-28

寫在前面:
程式碼的易讀性,個人認為是非常重要,受團隊重視但是不能始終貫徹的.雖然物件導向已經成為了不二主流,在PHP的大世界裡,在本人遇到的各種PHPer中,程式導向的寫法仍比比皆是.維護成本也各不相同.
下面是本人在工作中的一些總結和想法,如有看的不舒服的,換個舒服的姿勢.

命名

命名規範是編碼的基本,下劃線和駝峰只是形式,實質還是要看想要這個名字做什麼.

1.確定使用動詞性質還是名詞性質
2.儘量將其具體化
3.勤於修改

eg1. userName VS userAttribute
eg2. setName VS manageName
eg3. 王建國 VS 王建設
eg4. getUserName VS getUserNameByUid

註釋

無效註釋一定要刪除!害人害己.
邏輯註釋一定要詳細!
程式碼修改後,註釋一定要改!
沒有註釋,別人還能一眼看明白,是真的厲害!

程式碼生命週期

1.區域性變數宣告和使用盡量靠近,不要跨過山河大海,穿過人山人海
$userLogObjectId = "string";
$userLogForCache = array(...);
$userLogForStorage = array(...);
if(!createUserLogForCache($userLogObjectId, $userLogForCache)) return false;
if(!createUserLogForStorage($userLogObjectId, $userLogForStorage)) return false;
複製程式碼
vs
複製程式碼
$userLogObjectId = "string";
$userLogForCache = array(...);
if(!createUserLogForCache($userLogObjectId, $userLogForCache)) return false;
$userLogForStorage = array(...);
if(!createUserLogForStorage($userLogObjectId, $userLogForStorage)) return false;
複製程式碼

2.方法呼叫盡量緊跟其後

public function setInputRules(){...}
public function getInputValues(){...}
public function main(){
    $this->setInputRules();
    $this->getInputValues();
}
複製程式碼
vs
複製程式碼
public function main(){
    $this->setInputRules();
    $this->getInputValues();
}
private function setInputRules(){...}
private function getInputValues(){...}
複製程式碼

3.成員變數謹慎使用:欲說還休
4.常量謹慎使用:const vs define

訪問許可權

許可權是基礎的,但是真正做到許可權管理的很少,基本上都是一溜的public.
雖然程式碼一樣跑的暢通無阻,管理一下,起碼看起來更安全和更專(裝)業(X)一些.
關鍵是其他人呼叫的時候不會感到一臉懵逼,也不會濫呼叫.看到自己精心寫出來的程式碼被隨意濫用,很不爽的啊!
而且對於編寫的類結構也更清晰,什麼是開放的,什麼是私有的,什麼是繼承的.

類間關係

1.面向介面程式設計,而不是面向實現程式設計
2.組合優於繼承
3.依賴注入
4.依賴反轉
5.等等...
對自己編寫的程式碼不斷進行優化重構,總會發現新的想法和技巧

設計模式

很少有東西是可以不懂就拿來使用的.
設計模式是一個啟示性工具,在程式碼解耦性和擴充套件性方面很強大.
選用合適的模式,結合自身需求,進行整合和修改,不斷優化重構,才能達到理想的效果.

測試

曾經看過一句話:沒有測試的程式碼,就好像在鋼絲繩上跳舞.高空,沒有安全帶的那種.隨時可能被摔死,而且死的很慘.
雖然TDD提出好久了,各流行框架也加入了PHPUnit,但是現實是骨感的.
只想說:測試非常非常重要!能寫出好的測試非常非常重要!能加就加!能早加就早加!

寫在後面:
看的舒服,其實就是對程式碼不斷優化重構的表現.是對程式碼精益求精的體現.
還沒有見過一次性寫完程式碼不進行修改的大牛.期待!
業精於勤,希望自身也能通過自己的總結,激勵自己,成為一個勤奮的人!

相關文章