Re: [請益] 很多層迴圈和if 怎麼寫比較好整理

看板Soft_Job作者 (開不了口)時間14年前 (2011/07/17 12:10), 編輯推噓7(7016)
留言23則, 8人參與, 最新討論串14/16 (看更多)
: 推 luciferii:其實還有另一個問題,不過可能對大多數程式沒差 07/17 02:45 : → luciferii:就是改寫成 if (b && c) 後,worst case下應該是比 07/17 02:45 : → luciferii:if (b) {if (c)} 多花一滴滴時間 07/17 02:46 : → luciferii:在某些需求下這個時間累積起來會很顯著 07/17 02:46 if(b && c) 這個東西 如果b 已經是false c就不會被評估了 這個條件直接不成立 所以我不懂為什麼會比 if(b) {if(c)}多花一點時間? @@ 針對多層if的問題 提出我比較喜歡的一種寫法: do { if(...) { ... break; } if(...) { ... break; } }while(0); 這樣可以守住 one in one out 也不會有太多層if 第一次看到很不喜歡 因為他跟while迴圈這種觀念比較不能合在一起 不過code寫多了 越覺得這是個好方法 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 59.121.4.94

07/17 12:15, , 1F
假如 c 是一個要經過複雜運算才能求得的東西 那些運算?
07/17 12:15, 1F

07/17 12:21, , 2F
if(b && c) -> 我也一直以為 當b == false時 根本不會管c
07/17 12:21, 2F

07/17 12:22, , 3F
印象中在vc++ or c#是這樣...,因為有次遇到bug,是c一跑
07/17 12:22, 3F

07/17 12:22, , 4F
就會當...但因為b在都是false時一直沒發現到
07/17 12:22, 4F

07/17 12:27, , 5F
那為什麼不用if(1){} 這種寫法XD
07/17 12:27, 5F

07/17 13:37, , 6F
推這篇的作法,我就是這樣寫,while內最後處理符合的
07/17 13:37, 6F

07/17 13:37, , 7F
然後無條件break;,while外底下處理失敗的或共同處理的
07/17 13:37, 7F

07/17 13:58, , 8F
do...while(0) 我還滿常用的
07/17 13:58, 8F

07/17 13:59, , 9F
我遇到兩邊都檢查(沒有Short-circuit evaluation)的是在
07/17 13:59, 9F

07/17 14:00, , 10F
SQL statement 時(跟使用的db軟體有關),沒注意到的工程
07/17 14:00, 10F

07/17 14:00, , 11F
師有時一直都找不到程式倒底慢在哪
07/17 14:00, 11F

07/17 14:02, , 12F
這麼特別,也許能分享一下實際的環境(engine)跟例子:)
07/17 14:02, 12F

07/17 14:04, , 13F
會有這個印象是因為大一時學PASCAL和FORTRAN 90時,老師
07/17 14:04, 13F

07/17 14:04, , 14F
也有特別提過要注意...orz...
07/17 14:04, 14F

07/17 14:04, , 15F
不過那都作古了,現在的高階語言哪些還沒預設使用我就不
07/17 14:04, 15F

07/17 14:04, , 16F
確定了
07/17 14:04, 16F

07/17 14:07, , 17F
補充:wiki 上有列表了
07/17 14:07, 17F

07/17 14:07, , 18F
07/17 14:07, 18F

07/17 14:17, , 19F
qrtt1 : 例如 SQL Server,它的問題不是不作,而是判斷
07/17 14:17, 19F

07/17 14:17, , 20F
得順序不是依statement順序,而是由SQL Server自己決定
07/17 14:17, 20F

07/17 14:18, , 21F
所以有時會抓不到問題
07/17 14:18, 21F

07/17 15:07, , 22F
嗯,看來能在DB專開個題申論。我跟DB很不熟就是了 ha ha
07/17 15:07, 22F

07/17 16:10, , 23F
excellent!!
07/17 16:10, 23F
文章代碼(AID): #1E8c2wWg (Soft_Job)
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 14 之 16 篇):
文章代碼(AID): #1E8c2wWg (Soft_Job)