→ airtsubasa: 會忙有很多原因,不合理的時程,不合理的專案成員! 06/25 18:22
推 king22649: 4. 怪怪的 06/25 18:28
假設從頭寫 A 的時間是 A1, 從頭寫 B 的時間是 B1,
正常情況下, 拿 A 直接改共用函式,
來寫 B 的時間應該是 B2 , 且 B2 < B1 . (如果不是這樣就不需要拿A改了).
假設 B2 寫完之後回去套 A 的時間式 A2 .
總開發時間是 A1+A2+B2 , 而這時間應該要小於 A1 + B1, 且 A2 應該極低.
(不是極低表示你元件沒拆對)
在這前提下, 這才算是重構, 不然只是單純在重新開發元件而已.
推 vi000246: TonyQ大說明得很清楚 感謝建議 06/25 18:41
推 cplusplus426: 大大真的強者 06/25 19:37
→ qrtt1: 不合理的成員丟溫泉,不要擋輸出。 06/25 20:27
推 content71: 感謝,最近很有感受 06/25 21:04
→ xo1100: 亂動別人code是行內大忌吧 06/25 22:34
推 APTON: 推! 06/25 22:45
※ 編輯: TonyQ (210.61.209.201 臺灣), 06/26/2020 12:41:58
※ 編輯: TonyQ (210.61.209.201 臺灣), 06/26/2020 12:42:58
推 Csongs: 推調理列出 06/26 14:11
→ Csongs: *條理 06/26 14:11
推 CloudyWing: 這篇講得很好,推 06/26 17:40
推 lerdor: 推 06/26 21:23
→ allenxxx: 當我極菜時,曾經有兩個前輩一個很不喜歡用oo,另一個極喜 06/27 01:25
→ allenxxx: 歡,結果那位oo派的不知發甚麼神經私自去大改另一位程式 06/27 01:26
→ allenxxx: 被火掉,因為原作者不肯繼續維護除非老闆給交代 06/27 01:27
→ allenxxx: 真的別隨便動人家東西,沒有開發者或上級授權的話 06/27 01:27
推 sharku: 推這篇 06/27 09:47
推 king22649: 這代表本來A,B間就有良好的溝通吧 不然會有lib, build, 06/27 12:42
→ king22649: design pattern使用不一樣的問題 正常來說都是更花時 06/27 12:42
→ king22649: 間的 06/27 12:42
→ king22649: 就是因為完成再重構 更花時間 才會需要先MERGE 弄出com 06/27 12:43
→ king22649: mon lib吧 06/27 12:43
推 king22649: 等等 你要說的是 先重構再完成吧? 06/27 12:50
我覺得你在談重構之前, 先好好重新組織你的問題再說......
不然很難跟你討論你的明白.
"重構" 會不會更花時間是能力跟權責問題, 不是溝通問題.
是不是很多人都沒看過 refactoring 該書啊?
為什麼這麼多人把整併功能視為重構? =_=
重構很單純的就是[安全的]把程式邏輯從 A 投影成 B,以一種不容易改壞的形式,
而兩套程式碼如果可以幸運地剛好重疊在一起,就可以被整併。
如果無法,那表示需要進行功能異動,
而這時候就不是重構,而是在進行元件化作業的功能異動。
到目前為止的討論,重構跟功能異動的兩頂帽子很顯然分不清楚啊.
這樣的前提底下來談重構是談身體健康還是來靈修的嗎?
※ 編輯: TonyQ (210.61.209.201 臺灣), 06/27/2020 13:19:50
推 king22649: 先完成A,B再重構的時間>先重構A部分邏輯給B引用的時間 06/27 14:17
→ king22649: 兩者應該都可以算是重構 第一個是重構A的comm lib部分 06/27 14:20
→ king22649: 第二個是重構AB 兩者功能上都沒太大的異動 06/27 14:20
→ king22649: 不太能理解 以時間作為重構的定義基準 06/27 14:21
推 king22649: 你的先完成指的是啥 先各自完成?還是先完成A COMM LIB 06/27 14:24
→ king22649: ? 06/27 14:24
"思考時間"為什麼不能作為基準. XDDD
另外, 重新寫出 A/B 都能用的元件是不是重構, 要取決於 A/B 的邏輯有沒有重疊,
你這前提沒弄清楚就談重構 AB , 基本上就已經是文不對題了. 後面都是零分好嗎?
如果我已經寫了上面兩段你都還是看不懂, 我覺得你要另尋高明了.
你要怎麼認知這件事情是你的自由, 但很顯然我們對重構的定義是不同的.
你如果對基礎假設有問題, 應該是先弄清楚基礎假設.
你怎麼知道 A跟B 一定有共用邏輯, 搞不好最後 A+B 會搞出個 C > A+B,
所以為什麼要假設 A+B 一定會有能夠重構的交集呢?
而如果是這樣, 又怎麼會是功能差不多呢?
太多吐槽點了, 就這樣吧.
※ 編輯: TonyQ (210.61.209.201 臺灣), 06/27/2020 14:34:04
推 king22649: 你第一段解釋沒問題 第二段解釋也沒問題 但你的第四點 06/27 14:41
→ king22649: 你真的不覺得需要解釋或修正 如果真的覺得不需要 那就 06/27 14:41
→ king22649: 當作是我的問題吧 06/27 14:41
→ king22649: 第三個解釋也是合理的 06/27 14:41
你看不懂坦白說不是我的責任, 我還是寫給看得懂的人看就好. 我盡力了. XD
※ 編輯: TonyQ (210.61.209.201 臺灣), 06/27/2020 15:08:05
推 king22649: 你這邊的重構使用的是 書裡名詞的定義那個? 06/27 15:13
→ TonyQ: 我會建議你試著把你想像中的重構描述, 就會知道落差了. 06/27 15:18
→ TonyQ: 我使用的重構定義文中已經描述過了, 請參照. 06/27 15:18
推 king22649: 這滿有趣的 確實是值得學習。 06/27 15:20
→ pttworld: 如果對時間的定義包含測試則重構不一定比較快 06/27 19:45
→ pttworld: 另外重構第一部有提到不遵守規則的重構坑越挖越大, 06/27 19:49
→ pttworld: 整體時間反而是比較多的 06/27 19:50