Soft_Job 板


LINE

這是個大哉問,所以資訊太少的狀況下有點難回答 但我還是試著從工程師的專業面來講這問題好了(先不談管理學或厚黑學XD) 要很簡單的當是非題回答的話,當然是: YES,請重構 一開始需求沒很複雜所以沒設計好是完全正常的 要做到 Design 但又不 Over Design 的精神 就是需求改動撞到問題的時候才重構,對,就是現在 但請不要是全部打掉重練,而是想辦法依據需求擴展該處就好(類似修bug) 我非常喜歡 Modern Web 2018 的一場 Terry Yin 大神的演講 原文連結:https://hackmd.io/c/MW18/%2FefTkc1AFRK-eYdXOOylmfQ 他把這類問題解釋的非常清楚又有趣 我這邊針對你的問題幫你提煉一下重點,但有興趣可以去看看原文 演講中提到 Michael Feather 大師的書 裡面提到重構的五步驟就是 1. 找到改動點 2. 找到測試點 3. 依賴隔離 4. 寫測試 5. 重構+新測試 而其中最困難的步驟就是:3. 依賴隔離 所以通常爭執點都在這,因為這可大可小 這點指的是,你要先把要改動的點抽離出來 搞清楚他的 input 有誰,output 有誰 最終目標是減少這段"改動點"跟其他人的相依性(解耦) 不要依賴任何神祕的全域變數或外部狀態 而是靠你當下 input 進來的東西就能順利執行,並給出 output 如果有依賴外部系統,例如資料庫 那就把連線用的物件當變數傳進來,而非在裡面自己生成 當然最好也不要有副作用 如果這步驟難度並不太高,你可以先寫個大測試保護好他,再來"抽離" 但如果難度恨天高,要做也只能先把手弄髒、刀開下去了 然後做好後續 code review 與人力測試,確保一切安穩 所以講這麼多才講到重點 重點就是這個抽離的步驟到底有多難,決定你重構要多久 而這時間算出來,配合商業端決策,才能決定你要不要現在做這件事 (重要系統的話遲早要做的,只是是不是現在而已) 至於當你這段程式碼,已經順利解耦之後 一切就回歸到完美的世界了 在只有 input -> 純邏輯 -> output 的時候 重構是很簡單的事了對吧?因為他只剩下 1. 寫測試測原本的邏輯 2. 做你想做的擴展 3. 確保舊測試沒壞 4. 寫新擴展的測試(也可以先4再2) 5. 新擴展的測試也全數通過 完成了,恭喜,世界因為你的努力又更美好了一點 最後聊一下測試這個問題 我想你原文說的歷經很多測試 應該是指線上跑很久沒壞 而不是指他有很完整的 unit/integration test 對吧? 那這其實就是債 沒有被自動測試的 code 就是債,不管你寫的多好 是債遲早就得還,不還還會生利息,除非這系統整個廢掉不用了 利息有的生的快,有的生的慢 生的慢的也就相對不急,可以有空再說 但你現在做的這個 copy 出一份 8.7 成像的 code 等於讓這個債變成 200% 的超級高利貸了,那當然越快還越好 --
QR Code



※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 36.230.204.42
※ 文章網址: https://webptt.com/m.aspx?n=bbs/Soft_Job/M.1542287062.A.B79.html ※ 編輯: BBSealion (36.230.204.42), 11/15/2018 21:08:32
1F:推 tommyptt: 推 11/16 18:47
2F:推 landlord: 是Terry Yin唷,尹哲,Odd-e的同事 :) 11/16 21:12
3F:推 landlord: 對Odd-e的培訓、顧問、社群活動,歡迎找我。 11/16 21:14
4F:→ landlord: 我是91, 目前Odd-e Taiwan的負責人。 11/16 21:14
5F:→ BBSealion: 91大神!!(一陣子忙沒來逛XDD 沒看到大神回應) 12/06 09:54
※ 編輯: BBSealion (60.248.176.220), 12/06/2018 09:55:25
6F:推 smily134: 推 06/28 23:49







like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草

請輸入看板名稱,例如:iOS站內搜尋

TOP