代碼大全第二版讀書筆記 第四部分-語句 十七、不常見的控制結構

不常見的控制結構

1.子程序中的多處返回

  • 如果能增強可讀性,那麼就使用return
  • 用防衛子句(早返回或早退出)來簡化複雜的錯誤處理
  • 減少每個子程序中return的數量

2.遞歸

在遞歸裏面,一個子程序自己負責解決某個問題的一小部分,它還把問題分解成很多的小塊,然後調用自己來分別解決每一小塊。
對於某一小範圍內的問題,使用遞歸會帶來簡單、優雅的解。在稍大一些範圍裏,使用遞歸會帶來簡單、優雅但是難懂的解。對於大多數問題,它所帶來的解將會是極其複雜的——在那些情況下,使用簡單的迭代通常會比較容易理解。因此要有選擇地使用遞歸。
1)使用遞歸的技巧
  • 確認遞歸能夠停止
  • 使用安全計數器防止出現無窮遞歸
  • 把遞歸限制在一個子程序內
  • 留心棧空間
  • 不要用遞歸去計算階乘或者斐波納契數列

3.goto

對於goto,人們總是持兩種觀點:反對和支持。用不用goto是一個信仰問題。我的信條是,在現代語言裏,你可以很容易地把九成的goto替換成與之等價的順序結構。對於這些簡單的情況,你應該把goto替換掉並把這當成習慣。對於複雜的情況,你仍有九成不用goto的可能:你可以把代碼拆分成小的子程序,使用try-finally,使用嵌套if,檢測並重新檢測某個狀態變量,或者重新設置條件結構。對於這些情況,想消除goto相對來說比較困難,但這是一種很好的智力訓練。

4.針對不常見控制結構的觀點

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章