8.19 被誤解的關鍵字:goto
8.19 被誤解的關鍵字:goto
goto的歷史爭議
劣勢
無限制使用goto,特別是往回跳,使程式結構複雜
任何程式都可使用順序、分支、迴圈三種結構表示出來
優勢
函式內的出錯出口的統一處理、指定唯一出口
當多層巢狀時,比break、return更有優勢
既能提高效率,也不會破壞程式良好的結構
哪些地方建議使用goto?
- 函式出錯時的處理
函式內部模組化設計:將函式主邏輯程式碼和出錯處理部分隔離,
結構更加清晰
程式碼複用:將一個函式多個出口歸併為一個總出口
資源統一處理:記憶體釋放、鎖、控制程式碼…
使用注意的一些地方
不要往回跳、只能往前跳
使用goto只能在同一函式內跳轉
goto標籤一般在兩段不同邏輯功能程式碼的交界處
不能大量使用
相關文章
- break、continue與goto關鍵字Go
- 被遺忘的Java關鍵字:transientJava
- Javascript中this關鍵字詳解JavaScript
- 萬字乾貨|Synchronized關鍵字詳解synchronized
- 深入瞭解 Java 的 volatile 關鍵字Java
- javascript的this關鍵字JavaScript
- JAVA關鍵字及其作用解釋Java
- Python關鍵字yield詳解Python
- Python 關鍵字 yield 詳解Python
- 關鍵字引數與非關鍵字引數(可變引數)詳解
- 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
- 被誤解的 MVC 和被神化的 MVVMMVCMVVM
- 被誤解的MVC和被神化的MVVMMVCMVVM
- Swift 關鍵字Swift
- typedef關鍵字
- Synchronized關鍵字synchronized
- JavaScript this關鍵字JavaScript
- Swift —— 關鍵字Swift
- oracle關鍵字Oracle
- Auto關鍵字
- 關於Java垃圾回收被誤解的7件事Java
- PHP static 關鍵字和 self 關鍵字例項化的區別PHP
- 詳解C++的模板中typename關鍵字的用法C++
- 詳解 C++ 的模板中 typename 關鍵字的用法C++
- 說說iOS中的常用的關鍵字static ,class(僅限Swift關鍵字)iOSSwift
- Java培訓教程之this關鍵字講解Java
- c/c++常見關鍵字解釋C++
- C/C++中extern關鍵字詳解C++