實戰技巧 goto語句的替代實現方式

2021-08-26 06:30:25 字數 973 閱讀 5033

曾幾何時,goto是多麼的讓牛人綻放他們高超的精湛技術

曾幾何時,goto又變成了萬惡之首

曾幾何時,goto只在教科書中的示例才會出現

有太多的理由不讓用goto,但有時,我們又想使用goto的功能,怎麼辦?

用try/catch/finally便可實現同等於goto的功能,來看二個示例:

try // operation two if (failed) // operation three if (failed) } catch (exception e)

和: try // operation two if (failed) // operation three if (failed) } finally

以上二段都等同於:

// operation one if (failed) // operation one if (failed) // operation one if (failed) when_failed: // do something when failed

用異常的方式有些暴力,但確實能正確的幫助實現類似goto的功能;用return和finally雖不是很暴力,但是比較難控制,因為涉及到return語句,它會在finally塊執行後得以執行,所以如果不想退出程式的話,這個方法還不如用異常來控制。

另外,break, continue也是比較強大的跳轉語句,特別是break label和continue label,可以跳出一層迴圈或是多層迴圈; 但是要注意一點的是break只能在迴圈語句和switch語句中使用,continue只能在迴圈語句中使用。所以它們的侷限性也很大。

這個小示例說明,goto不單單是乙個語句,它是一種解決問題的思路和程式設計習慣,習慣了它的人,或者是想用它的人,即使不用goto也會寫出類似goto邏輯出來。它的優點是會更容易的幫助找出解決方案。它的缺點也是眾人皆知。但我們要避免的不單單是乙個goto語句,而是這種「跳轉式」的解決思路和程式設計習慣。

Android實戰技巧 ViewStub的應用

在開發應用程式的時候,經常會遇到這樣的情況,會在執行時動態根據條件來決定顯示哪個view或某個布局。那麼最通常的想法就是把可能用到的view都寫在上面,先把它們的可見性都設為view.gone 然後在 中動態的更改它的可見性。這樣的做法的優點是邏輯簡單而且控制起來比較靈活。但是它的缺點就是,耗費資源...

Android實戰技巧 ViewStub的應用

在開發應用程式的時候,經常會遇到這樣的情況,會在執行時動態根據條件來決定顯示哪個view或某個布局。那麼最通常的想法就是把可能用到的view都寫在上面,先把它們的可見性都設為view.gone 然後在 中動態的更改它的可見性。這樣的做法的優點是邏輯簡單而且控制起來比較靈活。但是它的缺點就是,耗費資源...

sql優化實戰技巧的理解

1.全值匹配,這是最好的選擇,因為索引欄位用的越多,精確度高。使用四個當然比用三個好了 2.最佳左字首,因為索引先按照第乙個排序嘛,這裡有兩重理解。一般來講,第乙個字段排序就可以過濾很多資料了,所以用這個索引字段當然效果好了,你用別的字段不好,因為過濾的少嘛。當然這個和我們建立索引的順序有關,我們也...