在這篇簡短的文章中,我想向您提供有關撰寫可讀 PHP 的技巧,
在處理舊代碼或通過 PR 提交的代碼時,有時會看到以下模式:
public function doSomething($someParameter)
{
/** 可以是任何型別的測驗 */
if ($someParameter === 0) {
// 實際作業
}
}
在函式的開頭,有一個正在執行的測驗,實際作業在 if 塊中,
這可以通過反轉條件和使用早期回傳來重構,
public function doSomething($someParameter)
{
if ($someParameter !== 0) {
return;
}
// 實際作業
}
這樣做有兩個好處:
一個縮進級別丟失,僅此一項就使閱讀更加愉快,您無需費心將代碼包裹在某種東西中,
提前回傳對人類來說也很好,當有人讀了你的代碼,對早期回傳感興趣,他或她不需要進一步的早期回傳,在第一個示例中,仍然可能有一些代碼在 if 塊之后執行,
當您考慮行長度限制 (您應該這樣做) 時,您現在可以在執行實際作業時使用更多的字符,
當存在多個條件時,此技術也適用,考慮以下功能:
public function doSomething($someParameter, $someOtherParameter)
{
/** 可以是任何型別的測驗 */
if ($someParameter === 0) {
if ($someOtherParameter === 0) {
// 實際執行
}
}
}
通過使用早期回傳,您可以將其重寫為更具可讀性的內容,
public function doSomething($someParameter, $someOtherParameter)
{
if ($someParameter !== 0) {
return;
}
if ($someOtherParameter !== 0) {
return;
}
// do the actual work
}
您可能想要重寫這個 if 陳述句,
if ($someParameter !== 0 || $someOtherParameter !== 0) {
在大多數情況下,出于以下三個原因,我不這樣做:
1. 就我個人而言,我需要更多的腦力來分析這個問題
2. 當有更多條件時,很容易出錯 (我應該使用 || 還是 &&)
3. 使用早期回傳更容易除錯,可以在那些 if 塊中放置斷點或 dump 陳述句,這樣,您就知道哪個條件會導致提前回傳,
本文總結:每當您看到在 if 塊中執行某些代碼時,請檢查是否可以反轉該條件以丟失縮進級別,
更多學習內容請訪問:
騰訊T3-T4標準精品PHP架構師教程目錄大全,只要你看完保證薪資上升一個臺階(持續更新)
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/71698.html
標籤:PHP
