看板 Soft_Job 關於我們 聯絡資訊
※ 引述《KHSH (KHSH)》之銘言: : bug 要少 : 就是 error detection/handling mechanism 要多 : : 當你的程式碼 : error handling 的部分超過 2/3 : 這樣就較有機會成為 bug-free (bug-less) 的 code : : → yjc1:高德納的名言:『Beware of bugs in the above code; 05/07 00:10 : → yjc1:I have only proved it correct, not tried it. 』 05/07 00:10 : 推 ggg12345:四面牆的平頂屋,防水就必須很費工.雙斜面屋頂就事半功倍! 05/07 01:55 : → ggg12345:太多error detection,若多餘也可能引入更多的矛盾與失誤! 05/07 02:16 : 推 sunsamy:給我足夠的時間bug自然少 05/07 03:49 : 推 shadow0326:我覺得好的error handling不是要讓bug變少, 而是讓bug 05/07 11:26 : → shadow0326:容易被定位 05/07 11:26 : → lwecloud:同意樓上 05/07 11:52 : → LaPass:要程式出錯時自己跟你說哪邊出問題 05/07 12:09 : 推 prokofieff:kernel的程式好難handle 05/07 12:48 ============== error dectecion 是允許錯誤發生, 再偵測, 排除. 如果採 error prevention 那是事先避免. 譬如有優先志願的選課, 志願欄若讓使用者隨意填, 還可以分不同時間分批填報 那要做 error detection 就很麻煩了. 如果是按課卡出現次序自動由程式填報, 同一類若出現在先, 就是志願在前. 不 同時間填報就附在前一批之後, 志願序也就隨append合併時, 調整在後, 這就不 會讓使用者亂填, 還要做 error detection 來得簡潔不失誤. 事前預防/避免 比之於 允許發生,事後偵測,排錯 在架構與算法上就是不同. bug 少, 其中一個因素可能就是 "事先防止使之不可能發生". -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.115.4.90
LaPass:把系統關掉禁止所有人使用 => 沒人用就不可能發生bug (逃 05/08 10:39
bobju:總之就是先規劃好再動工.最差的是邊寫邊改的那種. 05/08 12:57
pooznn:邊寫邊改似乎是常態 先規劃好再動工 老闆可能會等到瘋掉! 05/08 15:15
ggg12345:永遠趕工做第一版,沒經驗傳承那就是無從規劃,防不了虫生! 05/08 17:52
bobju:剛寫程式寫上癮時很難克制先coding再說的衝動,總要debug到怕 05/08 18:04
bobju:了才會把規劃看得比較重,甚至到後來沒規格書就是不想動. 05/08 18:05
ledia:agile 表示: ... 05/08 22:25
yauhh:請教:除以0,以及,超出陣列範圍,二者都較適合做事先防止,或者 05/08 22:48
yauhh:執行之後補捉錯誤? 05/08 22:48
ggg12345:除以0有trap會警示,陣列範圍得自己檢查,記憶體保護是區塊 05/08 22:58
yauhh:對,不過實務上是trap到除以0的情況,以及超出陣列範圍的情況, 05/08 23:13
yauhh:只要trap到並且噴出訊息,就叫作bug. 05/08 23:14
ggg12345:檢試到分母為0還是得跳出來警示,也做不下去阿! 05/08 23:50
ggg12345:超出陣列範圍未必碰觸到memory protection,錯了未必知道. 05/08 23:52
ggg12345:若碰觸mem-protect引發trap也是跑不下去,都是要debug! 05/08 23:57
yauhh:並沒有說不debug,只是弄成bug-free的手段,可能彼此觀念不一 05/09 00:19
yauhh:就說我,通常是經過整個連環套鎖變化的程式狀態之後,發生除0 05/09 00:21
yauhh:所以我關心的不會只是那個除號右邊,而是前面發生什麼事. 05/09 00:22
yauhh:我會沿路埋下一堆assert來幫忙在開發測試時就抓到錯誤. 05/09 00:23
ggg12345:這兩項若效率不是問題,分母變數與陣列範圍的檢視就到處掛 05/09 00:50
yauhh:assertion是架設保護欄給工程師自己注意用的,而不是埋炸彈喔 05/09 21:02