国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

這幾個(gè)編碼小技巧將令你 PHP 代碼更加簡(jiǎn)潔

Pikachu / 413人閱讀

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

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

數(shù)組轉(zhuǎn)化

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

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

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

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

類型檢測(cè)

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

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

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

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

重構(gòu)長(zhǎng) If 語(yǔ)句

有時(shí)候,在執(zhí)行動(dòng)作之前我們需要做一些條件檢查。但是,隨著我們的應(yīng)用的持續(xù)增長(zhǎng),if 語(yǔ)句會(huì)變得越來(lái)越長(zhǎng)。所以,我們需要考慮重構(gòu)。一個(gè)小例子:

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

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

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

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

去掉不必要的 if 語(yǔ)句

一個(gè)普遍的錯(cuò)誤,我們會(huì)經(jīng)常性的過(guò)度使用 if-else 語(yǔ)句。當(dāng)然,有些時(shí)候它是不可省略的,但也有些情況,我們不需要用到它。

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

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

但是邏輯顛倒了怎么辦? 那么, 如果條件是?true?我們又想返回 false 該怎么辦? 當(dāng)然,在 if 語(yǔ)句中,我們僅需要相反的 true 和 false ,但是在重構(gòu)的版本中,我們會(huì)有一個(gè)相對(duì)輕松的工作。只需要在你驗(yàn)真假的時(shí)候加上 ! 運(yùn)算符。它將返回顛倒后的結(jié)果。

總結(jié)

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

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

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

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/28444.html

相關(guān)文章

  • PHP / Laravel 月刊 #23

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

    klinson 評(píng)論0 收藏0
  • 我與Jetbrains的這些年

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

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

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

    ninefive 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<