[討論] 重構的一些問題

看板Soft_Job (軟體人)作者 (累人啊....)時間14年前 (2012/02/16 12:39), 編輯推噓5(5024)
留言29則, 10人參與, 最新討論串1/1
如題,想請問一下各位的作法 現在有一個專案啊,正在對它進行重構(因為太亂了) 但是他本身就有bug(看起來是memory leak的問題) 但是它並不是每次都會跑出來,大概十次會出現個一兩次吧 而且是在程式不使用,關閉的時候才出現的(就是按exit之後的事) 可以當作是沒有很嚴重的bug吧 請問各位在這種情況下,會先進行重構,還是先debug呢? 先debug的話,程式很亂,且有許多thread,timer等等同時進行,難度不低 先重構的話,也沒辦法百分百確定和重構沒關係,即使只是作小小的改變 (不過通常重構也都一次改一點點也就是了..@@) 請問各位的經驗是...? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 111.251.184.47

02/16 12:41, , 1F
我的話 而且有時間的話 我會先一點一點重構
02/16 12:41, 1F

02/16 12:42, , 2F
這樣會讓code變得比較清楚 比較好判斷問題
02/16 12:42, 2F

02/16 12:47, , 3F
當然先找問題點,重構要從長計議...
02/16 12:47, 3F

02/16 12:52, , 4F
重購完也許 bug 就不見了, 可是你還是不知道原因。
02/16 12:52, 4F

02/16 12:53, , 5F
不過重構和重寫的區別是在哪呢?這個概念我不清楚。
02/16 12:53, 5F

02/16 13:05, , 6F
很多時候重構以後等於重寫了XD...
02/16 13:05, 6F

02/16 13:07, , 7F
總不可能直接開個新專案,然後從頭開始吧@@Y
02/16 13:07, 7F

02/16 13:11, , 8F
搜尋本板[重構]找被m的那篇 看他的第二句話
02/16 13:11, 8F

02/16 14:54, , 9F
02/16 14:54, 9F

02/16 14:54, , 10F
重構跟重寫有很大的差異
02/16 14:54, 10F

02/16 14:55, , 11F
重構跟重寫最大的差別在於,重構的每一個step 跟原本的寫法
02/16 14:55, 11F

02/16 14:55, , 12F
架構上跟流程上需要可證明是「完全等價」
02/16 14:55, 12F

02/16 14:55, , 13F
所謂的完成等價的意思是畫面差1px ,多一行不同code被執行到
02/16 14:55, 13F

02/16 14:56, , 14F
都不行(指改造目標以外)流程上是跟原本的完全一致的。
02/16 14:56, 14F

02/16 14:57, , 15F
重寫如果你有把握作到這件事情,那也可以說重構,但是一般重
02/16 14:57, 15F

02/16 14:57, , 16F
寫幾乎都會改變到行為。
02/16 14:57, 16F

02/16 14:58, , 17F
如果重構後BUG會不見,基本上我認為那已經不叫重構了...
02/16 14:58, 17F

02/16 14:59, , 18F
如果重構後bug不見,那表示你沒有按照原本的行為作為重構的
02/16 14:59, 18F

02/16 14:59, , 19F
標竿,或者重構過程中你帶上了修改功能的帽子而不自知。
02/16 14:59, 19F

02/16 15:01, , 20F
你有機會再重構過程因為對流程的了解但發現bug,此時如果
02/16 15:01, 20F

02/16 15:01, , 21F
你進行修bug的行為,這個帳不是算在重構上。
02/16 15:01, 21F

02/16 15:02, , 22F
而是修改功能的帽子,之後可以再進行後續重構。
02/16 15:02, 22F

02/16 16:41, , 23F
謝謝,了解了
02/16 16:41, 23F

02/16 17:02, , 24F
一定要先能確定原因,才能debug。
02/16 17:02, 24F

02/16 17:04, , 25F
一定要能確定執行結果一樣,才能重構
02/16 17:04, 25F

02/16 17:05, , 26F
這是兩件事囉
02/16 17:05, 26F

02/16 17:11, , 27F
順便問一下,像這種情形的bug,何解?
02/16 17:11, 27F

02/16 20:16, , 28F
memory leak 當然是找 profiling 工具啊orz
02/16 20:16, 28F

02/21 21:53, , 29F
把有malloc的地方找出來~~應該是有未free的memory~
02/21 21:53, 29F
文章代碼(AID): #1FF8YI-y (Soft_Job)
文章代碼(AID): #1FF8YI-y (Soft_Job)