成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

這幾個編碼小技巧將令你 PHP 代碼更加簡潔

Pikachu / 420人閱讀

摘要:類型檢測類型檢測也是一種讓代碼簡潔的小技巧。上文中,我們只是嘗試搜集了一些例子,在這些例子里,你只需做出一點小的努力,就可以讓你的代碼變得更好更簡潔。

保持代碼簡潔和高可讀性遠遠要比我們想象的要難,有時候甚至比持續(xù)架構設計都要難。這里收集了一些可能對你重構代碼有用的 代碼片段 供大家參考。

數(shù)組轉化

我們常常需要在一個函數(shù)里面接受一個支持字符串或者數(shù)組類型數(shù)據(jù)的參數(shù)??梢允褂眠m當?shù)念愋娃D化方式將字符串類型轉化成數(shù)組類型,來取代類型檢測。

// 沒有類型轉化
$param = is_array($param) ? $param : [$param];
array_map(function ($item) {
    //
}, $param);

// 使用類型轉化
array_map(function ($item) {
    //
}, (array) $param);

當然這看起來沒什么區(qū)別,只是節(jié)省了一行代碼而已。但是你可以設想一下,當你使用復雜的循環(huán)結構或者嵌套數(shù)組處理大量數(shù)據(jù)時。這樣做將會有意義,它能使代碼保持簡潔。

類型檢測

類型檢測也是一種讓代碼簡潔的小技巧。一個小的類型檢測可以為你節(jié)省幾行代碼,同時可以使參數(shù)具有一些靈活性。

public function scopeOfTeam($query, $team) {
    $team = $team instanceof Team ? $team->id : $team;

    return $query->where("team_id", $team);
}

在這個例子中,我們可以使用一個表達式在一行中進行類型檢測,所以我們不需要到處使用 if-else 語句。同時這樣函數(shù)就可以接收 Team 類型或 int 型兩種類型的數(shù)據(jù)了。

重構長 If 語句

有時候,在執(zhí)行動作之前我們需要做一些條件檢查。但是,隨著我們的應用的持續(xù)增長,if 語句會變得越來越長。所以,我們需要考慮重構。一個小例子:

// 與其這樣
if ($a === "val_1" || $a === "val_2" || $a === "val_3") {
    // 執(zhí)行動作
}

// 不如這樣
if (in_array($a, ["val_1", "val_2", "val_3"])) {
    // 執(zhí)行方法
}

注意,第一個例子運行方式與第二個有一些不同。第一個例子中,只要有一個條件為真,則后面的條件就會被忽略,在一些情況下,它會更快。謝謝 Zois Pag 的建議。

這兩個例子的結果是一樣的,但是第二個更整潔。我們可以不再使用 || 操作符,并且只引用了 $a 變量一次。

去掉不必要的 if 語句

一個普遍的錯誤,我們會經(jīng)常性的過度使用 if-else 語句。當然,有些時候它是不可省略的,但也有些情況,我們不需要用到它。

// 之前這樣用
if ($a === "b") {
    return true;
} else {
    return false;
}

// 現(xiàn)在可以這樣
return $a === "b";

但是邏輯顛倒了怎么辦? 那么, 如果條件是?true?我們又想返回 false 該怎么辦? 當然,在 if 語句中,我們僅需要相反的 true 和 false ,但是在重構的版本中,我們會有一個相對輕松的工作。只需要在你驗真假的時候加上 ! 運算符。它將返回顛倒后的結果。

總結

每天我們都能發(fā)現(xiàn)一些充滿了過度復雜邏輯的方案和代碼,長期來看,這對開發(fā)者和產(chǎn)品本身都不好。上文中,我們只是嘗試搜集了一些例子,在這些例子里,你只需做出一點小的努力,就可以讓你的代碼變得更好更簡潔。

討論請前往社區(qū):https://laravel-china.org/top...

文章版權歸作者所有,未經(jīng)允許請勿轉載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉載請注明本文地址:http://systransis.cn/yun/28444.html

相關文章

  • PHP / Laravel 月刊 #23

    摘要:大刀闊斧的改造在學習了兩遍之后,基于教程開發(fā)的校園二手書交易平臺熊能本周閱讀清單紙牌屋弗蘭克知道的太晚了實現(xiàn)微信紅包拆分算法聊聊最近求職發(fā)生的故事無銘更多現(xiàn)代化知識,請前往知識社區(qū) showImg(https://segmentfault.com/img/bV8ctF?w=1650&h=1100); 最新資訊 Laravel 5.6 中文文檔翻譯完成,譯者 60 人,耗時 10 天...

    klinson 評論0 收藏0
  • 我與Jetbrains的這些年

    摘要:以為例,來講解一下的一些有趣的配置。帥氣的也是調(diào)整開發(fā)效率的一部分。的開發(fā)者日也并不是全部商業(yè)宣傳,至少它做的事情是值得讓開發(fā)者認可的。抱歉大會主要將了以下幾項內(nèi)容,上午是主會場,下午分倆個會場和,作為一個程序員,我沒得選。 showImg(https://segmentfault.com/img/bVbjWTw?w=2000&h=1118); 前言 本章主要說一下如何去使用Jetbr...

    layman 評論0 收藏0
  • Laravel 5.7 最佳實踐和開發(fā)技巧分享

    摘要:當查詢數(shù)據(jù)時,本地范圍允許我們創(chuàng)建自己的查詢構造器鏈式方法。這樣便會知道這是一個本地范圍并且可以在查詢構造器中使用。某些查詢構造器不可用或者說可用但是方法名不同,關于這些請查閱所有集合的方法。 showImg(https://segmentfault.com/img/remote/1460000017877956?w=800&h=267); Laravel 因可編寫出干凈,可用可調(diào)試的...

    ninefive 評論0 收藏0

發(fā)表評論

0條評論

Pikachu

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<