目錄
1.完全不必要的Else區塊" >1.完全不必要的Else區塊
2.價值分配" >2.價值分配
3.前提條件檢查" >3.前提條件檢查
4.將If-Else轉換為字典—完全避免If-Else" >4.將If-Else轉換為字典—完全避免If-Else
5.擴充應用程式—完全避免使用If-Else" >5.擴充應用程式—完全避免使用If-Else
首頁 Java java教程 我們公司如何把專案中的2000個if-else徹底幹掉的?

我們公司如何把專案中的2000個if-else徹底幹掉的?

Jul 26, 2023 pm 04:29 PM
if-else


我們公司如何把專案中的2000個if-else徹底幹掉的?

設計更好的軟體,取代If-Else的5種方法。入門到高級範例

讓我直接說這句話:If-Else通常是一個糟糕的選擇。

它導致設計複雜,程式碼可讀性差,並且可能導致重構困難。

但是,If-Else已成為事實上的程式碼分支解決方案,這確實是有道理的。這是向所有有抱負的開發人員講授的第一件事。不幸的是,許多開發人員從來沒有前進到更合適的分支策略。

有些人的口頭禪是:If-Else是一把錘子,一切都是釘子。

無法區分何時使用更合適的方法是區分大三學生和大三學生的原因之一。

我將向您展示一些技巧和模式,這些技巧和模式將終結這種可怕的做法。

每個範例的難度都會增加。

1.完全不必要的Else區塊

這也許是那些初級開發人員最負罪的之一。下面的範例很好地說明了當您被認為If-Else很棒時會發生什麼。

我們公司如何把專案中的2000個if-else徹底幹掉的?

只需刪除else`區塊即可簡化此過程。

我們公司如何把專案中的2000個if-else徹底幹掉的?

看起來更專業吧?

您會經常發現,實際上根本不需要其他區塊。像在這種情況下一樣,您想要在滿足特定條件的情況下執行某些操作並立即返回。

2.價值分配

如果您要根據提供的某些輸入為變數分配新值,請停止If-Else廢話-一種更具可讀性的方法。

我們公司如何把專案中的2000個if-else徹底幹掉的?

儘管很簡單,但它卻很糟糕。首先,If-Else很容易在這裡被開關取代。但是,我們可以透過完全刪除else來進一步簡化此程式碼。

我們公司如何把專案中的2000個if-else徹底幹掉的?

如果不使用else,則我們將剩下乾淨的可讀程式碼。請注意,我也將樣式更改為快速返回而不是單返回語句-如果已經找到正確的值,繼續測試一個值根本沒有意義。


3.前提條件檢查

#通常,我發現,如果方法提供了無效的值,則繼續執行是沒有意義的。

假設我們從以前就有了DefineGender方法,要求提供的輸入值必須永遠為0或1。

我們公司如何把專案中的2000個if-else徹底幹掉的?

在沒有價值驗證的情況下執行方法沒有任何意義。因此,在允許方法繼續執行之前,我們需要檢查一些先決條件。

套用保護子句防禦性編碼技術,您將檢查方法的輸入值,然後繼續執行方法。

我們公司如何把專案中的2000個if-else徹底幹掉的?

至此,我們確保只有在值落在預期範圍內時才執行主邏輯。

現在,IF也已被三元代替,因為不再需要在結尾處預設回傳"未知"。

4.將If-Else轉換為字典—完全避免If-Else

假設您需要執行一些操作,這些操作將根據某些條件進行選擇,我們知道以後必須添加更多操作。

我們公司如何把專案中的2000個if-else徹底幹掉的?

也許有人傾向於使用久經考驗的If-Else。如果新增操作,只需簡單地新增其他內容即可。很簡單 但是,就維護而言,這種方法不是一個好的設計。

知道我們以後需要新增新的動作後,我們可以將If-Else重構為字典。

我們公司如何把專案中的2000個if-else徹底幹掉的?

可讀性已大大提高,並且可以更輕鬆地推斷出該程式碼。

注意,僅出於說明目的將字典放置在方法內部。您可能希望從其他地方提供它。

5.擴充應用程式—完全避免使用If-Else

這是一個稍微進階的範例。

透過用物件替換它們,知道何時甚至完全消除If。

通常,您會發現自己必須擴展應用程式的某些部分。作為初級開發人員,您可能會傾向於透過添加額外的If-Else(即else-if)語句來做到這一點。

舉出這個說明性的例子。在這裡,我們需要將Order實例顯示為字串。首先,我們只有兩種字串表示形式:JSON和純文字。在此階段使用If-Else並不是什麼大問題,如果我們可以輕鬆替換其他,只要如前所述即可。

我們公司如何把專案中的2000個if-else徹底幹掉的?

知道我們需要擴充應用程式的這一部分,這種方法絕對是不可接受的。

上面的程式碼不僅違反了"開啟/關閉"原則,而且閱讀得不好,還會造成可維護性方面的麻煩。

正確的方法是遵循SOLID原則的方法-我們透過實施動態類型發現過程(在本例中為策略模式)來做到這一點。

重構這個混亂的過程的過程如下:

· 使用公共介面將每個分支提取到單獨的策略類別中

· 動態查找實現通用介面的所有類別

· 根據輸入決定執行哪種策略

取代上面範例的程式碼如下所示。是的,這是更多代碼的方式。它要求您了解類型發現的工作原理。但是動態擴展應用程式是一個高級主題。

我只顯示將替換If-Else範例的確切部分。如果您想查看所有涉及的對象,請查看此要點。

我們公司如何把專案中的2000個if-else徹底幹掉的?

讓我們快速瀏覽程式碼。

方法簽章保持不變,因為呼叫者不需要了解我們的重構。

首先,取得實作通用介面IOrderOutputStrategy的程式集中的所有類型。然後,我們建立一個字典,格式化程式的displayName的名稱為key,類型為value。

然後從字典中選擇格式化程式類型,然後嘗試實例化策略物件。

最後,呼叫策略物件的ConvertOrderToString。

以上是我們公司如何把專案中的2000個if-else徹底幹掉的?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

我們公司如何把專案中的2000個if-else徹底幹掉的? 我們公司如何把專案中的2000個if-else徹底幹掉的? Jul 26, 2023 pm 04:29 PM

首先,取得實作通用介面IOrderOutputStrategy的程式集中的所有類型。然後,我們建立一個字典,格式化程式的displayName的名稱為key,類型為value。然後從字典中選擇格式化程式類型,然後嘗試實例化策略物件。

Java怎麼優雅地書寫if-else Java怎麼優雅地書寫if-else Apr 29, 2023 pm 10:04 PM

1.switchswitch方法針對枚舉值處理有不錯的效果,例如針對不同的訂單狀態時要做不同的處理,因為狀態值有限,這時我們就可以直接使用switch來針對不同狀態做不同的處理:原語句publicvoidbefore(Integerstatus){if(status==1){System.out.println("訂單未接單");}elseif(status==2){System.out.println("訂單未出貨") ;}elseif(status==3

java如何使用三目運算子來優化if-else java如何使用三目運算子來優化if-else May 02, 2023 pm 11:34 PM

使用三目運算子來最佳化if-else1、根據if-else條件來判斷賦值的,如:Stringid="";if(flag){id="a";}else{id="b";}利用三目運算符,可以直接最佳化成一行程式碼:id=flag?"a":"b";2、使用if-else條件來判斷呼叫方法,如:Setset1=newHashSet();Setset2=newHashSet(); if(flag){set1.add(

Go 語言基礎 - if-else Go 語言基礎 - if-else Jul 24, 2023 pm 03:38 PM

if是具有布林條件的語句,如果該條件的計算結果為true,將會執行if後面大括號裡的程式碼,如果結果為false,則會執行else後大括號裡的程式碼。

在C/C++中同時執行if和else語句 在C/C++中同時執行if和else語句 Sep 05, 2023 pm 02:29 PM

在本節中,我們將了解如何在C或C++程式碼中同時執行if和else部分。這個解決方案有點棘手。當if和else相繼執行時,就像執行不存在if-else的語句一樣。但在這裡我們將看看它們是否存在如何依次執行它們。範例程式碼#include<iostream>usingnamespacestd;intmain(){  intx=10;  if(x>5) {  &

Python中的常見流程控制結構有哪些? Python中的常見流程控制結構有哪些? Jan 20, 2024 am 08:17 AM

Python中常見的流程控制結構有哪幾種?在Python中,流程控制結構是用來決定程式的執行順序的重要工具。它們允許我們根據不同的條件執行不同的程式碼區塊,或重複執行一段程式碼。以下將介紹Python中常見的流程控制結構,並提供對應的程式碼範例。條件語句(if-else):條件語句允許我們根據不同的條件執行不同的程式碼區塊。它的基本語法是:if條件1:#當條件

技巧分享:減少if-else使用,增加程式碼的可讀性! 技巧分享:減少if-else使用,增加程式碼的可讀性! Oct 27, 2022 am 10:11 AM

本文並未有消滅或歧視 if else的意思,if else 的好用都知道,這裡只是在某些特定場景為大家額外提供一種思路,增加我們代碼的可讀性。

一文教你實作JavaScript if分支優化 一文教你實作JavaScript if分支優化 Mar 14, 2023 pm 07:37 PM

1000個判斷條件難道要寫了1000個 if ?怎麼優化if分支語句?下面這篇文章就來帶大家聊聊怎麼實現分支優化,希望對大家有幫助!

See all articles