回覆列表
  • 1 # 荒野毒蜘蛛

    原因是這樣的:在寫程式過程中,在進行條件分支時,我們首先想到的是對此條件分支,如何進行條件封閉,也就是說所有預知結果,應該都在程式的分支中得到處理,if else,讓人第一直覺,完成了條件封閉,如果二分支沒有進行封閉就會繼續寫成if- else if- else,也同樣進行了完全封閉,而switch,我 們需要對每個case進行考慮,同時要預知case已知的範疇,此時若為列舉物件時,就顯得會友好一些,若為string物件或int型,那麼明顯,如果要做到條件封閉,就必須要寫一個default進行處理,同時寫switch,要在每個case後面,寫上一個break;那麼此時,會讓很多人覺得略顯麻煩 !除錯角來度來說,if-else除錯打斷點更方便一些,而switch {case:},除錯中通過各種考慮發現最終還是放在了switch的入口位置……,當條件較多,值為列舉型別或者為了更好和更方便的的閱讀程式時,應該合理的使用switch!

  • 2 # 飛哥之語

    以前的C等switch,分支可break,也可不break直接執行下一分支,易出錯,太家用ifelse習慣了

  • 3 # 工控程式設計

    1.人都是懶的,自然選擇使用簡單的。

    2.人都是人教的,沒人教你利弊,自然一切從簡。其實三個以上時,執行效率上switch高,這個搞逆向熟悉彙編的都知道

  • 4 # 吾不知魚之樂乎

    很二的問題,沒有資料證明誰用的多,什麼環境用什麼,有時接手新增程式碼,推倒屎山沒意義,不如就if繼續下去,現在計算機效能強大,不必像前輩們那樣去考慮程式碼的效率,一行語句和十行語句,只要不出八哥完成任務,無所謂的。

  • 5 # 我哈我哈

    當有多個判決結果時,建議用switch,如果用if,會降低速度,降低軟體的效能。當只有2個判決結果時,建議用if而不用switch.主要根據情況而定,不同的情況,使用不同的語句。

  • 6 # 宇悅有言

    if...else if...else,這麼簡單明瞭的語句,它用起來不香嗎?

    程式碼是不用維護了是嗎?

    要不要用了switch再整個三元運算?

    我覺得最好的程式碼就是,簡單明瞭,還能實現複雜的功能。

  • 7 # 黑的夏

    會提這個問題的,估計根本沒多少開發經驗。實際專案中,基本上都是用if的。

    我就直接說最關鍵的原因吧: switch 只能對一個變數進行處理,但是實際情況是業務邏輯通常需要判斷多個變數。

    一些人可能會說,當前就一個判斷一個變數啊,可以用swich。然而,這個想法也是侷限性的,因為要考慮後期可能會增加變數來判斷。僅僅少數情況才可以用switch, 大部分都建議用if

  • 8 # 哎呀呀呀2020

    國內程式設計師只要能把程式弄出來好用就行了,誰還在意程式碼的嚴謹和執行速度呢?同樣的多分支判斷,switch比else if強太多了,比如10個分支判斷,前者判斷一次,後者依次判斷10次!

  • 9 # 箕山隱士

    if和swith是兩種不同的程式設計思維

    如果出現比較多的ifelse,程式碼會變得不易讀,要考慮一下控制邏輯的設計上是不是有可優化空間

    每個ifelse從邏輯上來說對應了一種分支情況

  • 10 # hhhGodluck

    從C/ C++來看,當分支較多且switch要比較的值是連續的話,執行速度遠遠遠遠快於if,因為switch是直接跳到目的碼執行的,而if則需要執行很多條語句,慢的不是一點點,一般編譯器會根據分支數量和比較的值是否連續生成不同彙編程式碼,如果編譯器判定不能提升速度的話,switch生成的彙編程式碼和if是一模一樣的沒有任何區別。

    至於很多人不用switch我覺得可能是:

    1.為了方便寫程式碼,思維習慣隨手就用if寫了;

    2.可能根本就不懂為什麼要用switch吧。

  • 11 # testerzhang

    答案:主要因為switch不適合業務系統的實際複雜需求,業務不斷的變更迭代,一更改需求,條件的複雜度高了,switch無力處理。

    switch優點

    那麼什麼時候適合switch,它的場景是:基於單一變數的值(如列舉),這樣的可讀性比if條件更清晰。

    switch缺點

    從上面的場景來看,實在太侷限,我來簡單說一下它的一些缺點吧:

    1. 現實的業務場景很複雜,條件不單一,一旦需求變更,維護程式碼相當崩潰。

    2. switch經常忘記寫break,估計很多人一不小心就忘記寫了。如果你看過google的程式碼規範,你會發現,Google對switch的要求非常多。

    switch的封裝才更靈活

    其實switch有人還在用也有一部分是歷史原因,但是隨著科技的發展,原有的設計以及落後了。

    有些程式語言,如Python都沒有switch這種語法。當然也有部分新語言Golang和Kotlin還是繼承下來,但是又把switch包裝了一下,去掉了令人誤會的語法,這才讓switch變得靈活起來了。 如果不封裝,很難用。

    IF語句的好處

    通過上面描述的缺點也就是if語句更靈活的地方,根據業務進行邏輯條件編寫,可維護性高。同時只要寫的程式碼質量高,可讀性也就會更高。

    建議

    現實的業務實際是很複雜的,我也不建議一定要用大量的if……else if,而是應該儘早返回來減少巢狀,這樣增加了可讀性以及降低維護的成本。

  • 12 # 向左回頭

    switch有侷限性,只能針對固定值判斷。如果不是特別明確的功能,使用if else更方便,免得後期還得改程式碼

  • 為何B超這種解析度極低的檢測方法還繼續存在呢?
  • 王氏歷史上有哪些名人?主要事蹟和貢獻是什麼?