中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

為什么不用Else語句寫代碼

發布時間:2022-01-05 09:25:23 來源:億速云 閱讀:114 作者:柒染 欄目:大數據

今天就跟大家聊聊有關為什么不用Else語句寫代碼,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內容,希望大家根據這篇文章可以有所收獲。

if…else 語句是許多程序員在寫代碼時最常用的方式之一。你甚至可以看到許多程序員的代碼中嵌套著無數 else 語句。可這樣,真的好嗎?

在剛開始接觸編程時,我多希望能有人在我摸索著開發第一個網站的過程中,給我分享一點中肯的人生經驗……

那會兒我犯下的第一個大錯誤,就是在編寫條件時過度使用 else 關鍵字。不只是我,后來我發現很多開發者朋友都有這個問題,所以我今天打算好好聊聊這件事。

在某些情況下,我們可能沒辦法在代碼里使用這類方法。有時候,使用 else 關鍵字確實是最好的解決方案。這些我都承認,下面只是想給大家提供一點關于構建邏輯的新思路。

為什么不用Else語句寫代碼

縮進波動拳!

衛語句

根據維基百科的介紹,衛語句是對完整性前提條件檢查。用于避免在執行期間發生錯誤。

望之不似人言,下面我就用普通話翻譯翻譯。我們首先得先對前提條件(在代碼開頭)進行完整性檢查,這樣才能避免主邏輯流程當中出現錯誤。

在理想的流程中(當驗證正確時),我們希望程序的主邏輯在驗證之后才開始運行。

現在讓我們假設自己在運營一個網站,其中包含一個高級購買區域,僅限付費客戶在每天夜里 12 點之后訪問。

<?php
if ($user != null) {    if (time() >= strtotime('12 pm')) {        if ($user->hasAccess(UserType.PREMIUM)) {            if ($store->hasItemsInStock()) {                // the content a premium user user should be able to see when the store is in stock                // after 12pm.            } else {                return 'We are completely sold out.';            }        } else {            return 'You do not have premium access to our website.';        }    } else {        return 'This section is not opened before 12PM';    }} else {    return 'You are not signed in.';}
 

在實際應用中,我們可能會返回某種形式的異常。

雖然這是一種條件流方案,但即使其中只包含少量 else 關鍵字,我們也很難跟上這樣的條件思路。

這還只是條件邏輯的一個簡單示例。在實際場景當中,大家肯定遇到過對邏輯極為復雜的類進行導航的狀況。在我看來,這樣的編碼方式缺乏可持續性,我們應該采取更好的辦法。

使用衛語句,我們可以遵循以下框架:

<?php
if (condition1()) {    return ...;}
if (condition2()) {    return ...;}
// Input is valid.doSomething();
 

利用這套框架,我們可以重構以前的代碼,具體如下所示:

<?php
if ($user == null) {    return 'You are not signed in.';}
if (time() < strtotime('12 pm')) {    return 'This section is not opened before 12PM';}
if (!$user->hasAccess(UserType.PREMIUM)) {    return 'You do not have premium access to our website';}
if (!$store->hasItemsInStock()) {    return 'We are completely sold out.';}
// the content a premium user user should be able to see when the store is in stock // after 12pm.
 

在衛語句中,我們通常將布爾表達式反轉為我們想要 assert 的內容。如果我們希望用戶在登錄之后才能查看此頁面,那么首先就得檢查他們是否已經登錄。

這種方法實現了相同的精確邏輯流程,但在我看來,這體現出了更為清晰的條件邏輯處理方法。


在編程時,我們應該始終牢記這樣一個問題:“這些代碼能夠穩定執行至少 6 個月嗎?”

就當下來講,這些代碼也許能夠很好地解決問題。但是未來呢?在編寫代碼時不考慮后續需求,顯然是種愚蠢的行為。

考慮到這一點,我果斷放棄了那些已經修復過無數次的代碼,從零開始編寫功能。是的,這樣才能徹底解決掉技術債務。

適當運用衛語句,大家將能夠為自己乃至團隊的開發成果奠定堅實的基礎,從而在未來需要時隨時滿足種種新增需求。

看完上述內容,你們對為什么不用Else語句寫代碼有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注億速云行業資訊頻道,感謝大家的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

奉化市| 固始县| 文昌市| 固阳县| 平乡县| 吴旗县| 遵义市| 永新县| 托克托县| 镶黄旗| 娱乐| 柳州市| 宁晋县| 沙坪坝区| 海宁市| 甘谷县| 五河县| 河北区| 卫辉市| 新闻| 济南市| 东方市| 吴江市| 长垣县| 扶沟县| 宁明县| 阳东县| 石阡县| 美姑县| 湄潭县| 桂东县| 阳新县| 乌兰察布市| 光山县| 绥棱县| 昌平区| 赤壁市| 富蕴县| 县级市| 宝清县| 甘泉县|