亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

使用“ goto”語句不好嗎?

使用“ goto”語句不好嗎?

九州編程 2019-09-26 10:27:52
在研究了如何突破次級循環之后while (true) { // Main Loop    for (int I = 0; I < 15; I++) { // Secondary loop        // Do Something        break; // Break main loop?    }}大多數人建議調用“ goto”功能, 如以下示例所示:while (true) { // Main Loop    for (int I = 0; I < 15; I++) { // Secondary Loop        // Do Something        goto ContinueOn; // Breaks the main loop    }}ContinueOn:然而; 我經常聽到'goto'聲明是不好的做法。下圖完美地說明了我的觀點:所以goto語句實際上有多糟糕,為什么?有沒有比使用“ goto”語句更有效的方法來打破主循環?
查看完整描述

3 回答

?
Helenr

TA貢獻1780條經驗 獲得超4個贊

編輯:

goto語句實際上有多糟糕,為什么?

這取決于實際情況。我不記得任何時候我發現它使代碼比重構更易讀。這也取決于您對可讀性的個人看法-從其他答案中可以明顯看出,有些人比其他人更不喜歡它。(有意思的是,它在生成的代碼中得到了廣泛的使用-C#5中的所有異步/等待代碼實際上都是基于很多getos的)。

問題在于,goto傾向于使用的情況傾向于是無論如何重構都可以幫助事情的情況-而goto堅持使用隨著代碼變得更加復雜而變得難以遵循的解決方案。

有沒有比使用“ goto”語句更有效的方法來打破主循環?

絕對。將您的方法提取到一個單獨的函數中:

while (ProcessValues(...)){
    // Body left deliberately empty}...private bool ProcessValues(){
   for (int i = 0; i < 15; i++)
   {
       // Do something
       return false;
   }
   return true;}

我通常更喜歡這樣做,而不是引入額外的局部變量來跟蹤“我已經完成”了-盡管當然可以。


查看完整回答
反對 回復 2019-09-26
  • 3 回答
  • 0 關注
  • 779 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號