8.19 被誤解的關鍵字:goto
8.19 被誤解的關鍵字:goto
goto的歷史爭議
劣勢
無限制使用goto,特別是往回跳,使程式結構複雜
任何程式都可使用順序、分支、迴圈三種結構表示出來
優勢
函式內的出錯出口的統一處理、指定唯一出口
當多層巢狀時,比break、return更有優勢
既能提高效率,也不會破壞程式良好的結構
哪些地方建議使用goto?
- 函式出錯時的處理
函式內部模組化設計:將函式主邏輯程式碼和出錯處理部分隔離,
結構更加清晰
程式碼複用:將一個函式多個出口歸併為一個總出口
資源統一處理:記憶體釋放、鎖、控制程式碼…
使用注意的一些地方
不要往回跳、只能往前跳
使用goto只能在同一函式內跳轉
goto標籤一般在兩段不同邏輯功能程式碼的交界處
不能大量使用
相關文章
- break、continue與goto關鍵字Go
- 被遺忘的Java關鍵字:transientJava
- Javascript中this關鍵字詳解JavaScript
- out關鍵字和ref關鍵字的區別
- 萬字乾貨|Synchronized關鍵字詳解synchronized
- 深入瞭解 Java 的 volatile 關鍵字Java
- javascript的this關鍵字JavaScript
- JAVA關鍵字及其作用解釋Java
- Python關鍵字yield詳解Python
- Python 關鍵字 yield 詳解Python
- this關鍵字
- 關鍵字
- 關鍵字引數與非關鍵字引數(可變引數)詳解
- block中self關鍵字的使用-防止self 被retain一次BloCAI
- Maven optional關鍵字透徹圖解Maven圖解
- C++ typeid關鍵字詳解C++
- C語言中static關鍵字詳解C語言
- c# yield關鍵字原理詳解C#
- abstract關鍵字 super 關鍵字 類與繼承繼承
- synchronized關鍵字的原理synchronized
- Java 的 static 關鍵字Java
- JAVA中的關鍵字Java
- Synchronized關鍵字的使用synchronized
- javascript中的with關鍵字JavaScript
- static關鍵字的作用
- 被誤解的 MVC 和被神化的 MVVMMVCMVVM
- 被誤解的MVC和被神化的MVVMMVCMVVM
- Swift 關鍵字Swift
- typedef關鍵字
- Synchronized關鍵字synchronized
- JavaScript this關鍵字JavaScript
- Swift —— 關鍵字Swift
- oracle關鍵字Oracle
- Auto關鍵字
- [JavaScript] this 關鍵字JavaScript
- 4關鍵字
- super關鍵字
- synchronized 關鍵字synchronized