Re: [請益] 這種情況要怎麼重構
※ 引述《vi000246 (Vi)》之銘言:
: 我現在遇到一個情況 同時跟其他人開發很相似的功能
: 舉例來說 我跟B同時開發兩個電商網站
: 一個叫博客來,一個叫蝦皮好了
: B已經建好博客來商品列表頁面
: 我也要建立蝦皮的商品列表 想把B建的博客來頁面拿來用
: 因為相似度很高,打算把頁面共用的邏輯抽出來
: 放到common lib
: 但是這時B也在開發中
: 如果我重構博客來頁面,他要把code merge回博客來時就要修很多衝突
: 這時我該做的是,直接複製博客來的邏輯,先把蝦皮商品列表建出來
: 等兩邊網站都完成,再來重構嗎?
: 因為現在程式成長幅度已經有點誇張了
: 單個檔一千行程式碼
: 我怕等兩邊都完成再重構,會花更多時間
: 現在就重構會造成merge衝突,而且兩邊開發進度也不一樣
: 他寫完的code我要用,就重構他的code
: 可能會重構到沒完沒了
: 遇到這種情況該怎麼辦呢?
: 想問有比較好的方法嗎
1. 你不應該去動別人開發中的 code, 除非 pair 或你是有被授權的人.
2. 你可以使用他的 code , 建 common, 但你不應該改回他的部分(理由1).
3. 假設改完會有衝突, 那表示你做的不是重構.
4. 如果完成再重構會花更多時間, 那表示你做的不是重構.
5. 你要用他的 code , 跟你要整理重構, 是兩回事.
所以你要先搞清楚你要做的事情, 是解決你的事情,
還是幫別人改(你未必有取得授權的) code.
你拿別人的東西, 改成自己能用的 common lib,
用自己的 common lib, 這樣基本上應該不至於被靠北.
但去動別人正在開發的東西, 說穿了, 你知道人家在幹嘛嗎?
你權責上能對人家時程負責嗎?
或說穿了, 你可以負起 fix conflict 的責任嗎?
另外有個版友說重構是農閒的事情,
其實重構是越忙的地方越需要, 因為會忙通常就是沒在重構,
但是這篇原文講得並不是重構,
而是在僭越職責的前提底下自作聰明改別人的程式碼.
厲害的人應該是會抽出正確的 common,
當A 跟B都做完的時候, 拿 common 套回去不會很久的.
會被開發拖著走的 common, 表示需求根本就還沒穩定到可以共同重構啊.
--
虛實之間的世界,反抗軍與啟蒙軍的交集
帶著 Android 去旅行、去發現
在身邊渾然不覺的 另一個世界。
全世界,都是我們的 足跡與遊樂場。
~ The world around you is not what it seems. ~ http://ingress.tw
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 223.138.6.255 (臺灣)
※ 文章網址: https://www.ptt.cc/bbs/Soft_Job/M.1593079648.A.A48.html
※ 編輯: TonyQ (223.138.6.255 臺灣), 06/25/2020 18:08:45
※ 編輯: TonyQ (223.138.6.255 臺灣), 06/25/2020 18:09:45
※ 編輯: TonyQ (223.138.6.255 臺灣), 06/25/2020 18:12:13
→
06/25 18:22,
3年前
, 1F
06/25 18:22, 1F
推
06/25 18:28,
3年前
, 2F
06/25 18:28, 2F
假設從頭寫 A 的時間是 A1, 從頭寫 B 的時間是 B1,
正常情況下, 拿 A 直接改共用函式,
來寫 B 的時間應該是 B2 , 且 B2 < B1 . (如果不是這樣就不需要拿A改了).
假設 B2 寫完之後回去套 A 的時間式 A2 .
總開發時間是 A1+A2+B2 , 而這時間應該要小於 A1 + B1, 且 A2 應該極低.
(不是極低表示你元件沒拆對)
在這前提下, 這才算是重構, 不然只是單純在重新開發元件而已.
推
06/25 18:41,
3年前
, 3F
06/25 18:41, 3F
推
06/25 19:37,
3年前
, 4F
06/25 19:37, 4F
→
06/25 20:27,
3年前
, 5F
06/25 20:27, 5F
推
06/25 21:04,
3年前
, 6F
06/25 21:04, 6F
→
06/25 22:34,
3年前
, 7F
06/25 22:34, 7F
推
06/25 22:45,
3年前
, 8F
06/25 22:45, 8F
※ 編輯: TonyQ (210.61.209.201 臺灣), 06/26/2020 12:41:58
※ 編輯: TonyQ (210.61.209.201 臺灣), 06/26/2020 12:42:58
推
06/26 14:11,
3年前
, 9F
06/26 14:11, 9F
→
06/26 14:11,
3年前
, 10F
06/26 14:11, 10F
推
06/26 17:40,
3年前
, 11F
06/26 17:40, 11F
推
06/26 21:23,
3年前
, 12F
06/26 21:23, 12F
→
06/27 01:25,
3年前
, 13F
06/27 01:25, 13F
→
06/27 01:26,
3年前
, 14F
06/27 01:26, 14F
→
06/27 01:27,
3年前
, 15F
06/27 01:27, 15F
→
06/27 01:27,
3年前
, 16F
06/27 01:27, 16F
推
06/27 09:47,
3年前
, 17F
06/27 09:47, 17F
推
06/27 12:42,
3年前
, 18F
06/27 12:42, 18F
→
06/27 12:42,
3年前
, 19F
06/27 12:42, 19F
→
06/27 12:42,
3年前
, 20F
06/27 12:42, 20F
→
06/27 12:43,
3年前
, 21F
06/27 12:43, 21F
→
06/27 12:43,
3年前
, 22F
06/27 12:43, 22F
推
06/27 12:50,
3年前
, 23F
06/27 12:50, 23F
我覺得你在談重構之前, 先好好重新組織你的問題再說......
不然很難跟你討論你的明白.
"重構" 會不會更花時間是能力跟權責問題, 不是溝通問題.
是不是很多人都沒看過 refactoring 該書啊?
為什麼這麼多人把整併功能視為重構? =_=
重構很單純的就是[安全的]把程式邏輯從 A 投影成 B,以一種不容易改壞的形式,
而兩套程式碼如果可以幸運地剛好重疊在一起,就可以被整併。
如果無法,那表示需要進行功能異動,
而這時候就不是重構,而是在進行元件化作業的功能異動。
到目前為止的討論,重構跟功能異動的兩頂帽子很顯然分不清楚啊.
這樣的前提底下來談重構是談身體健康還是來靈修的嗎?
※ 編輯: TonyQ (210.61.209.201 臺灣), 06/27/2020 13:19:50
推
06/27 14:17,
3年前
, 24F
06/27 14:17, 24F
→
06/27 14:20,
3年前
, 25F
06/27 14:20, 25F
→
06/27 14:20,
3年前
, 26F
06/27 14:20, 26F
→
06/27 14:21,
3年前
, 27F
06/27 14:21, 27F
推
06/27 14:24,
3年前
, 28F
06/27 14:24, 28F
→
06/27 14:24,
3年前
, 29F
06/27 14:24, 29F
"思考時間"為什麼不能作為基準. 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
推
06/27 14:41,
3年前
, 30F
06/27 14:41, 30F
→
06/27 14:41,
3年前
, 31F
06/27 14:41, 31F
→
06/27 14:41,
3年前
, 32F
06/27 14:41, 32F
→
06/27 14:41,
3年前
, 33F
06/27 14:41, 33F
你看不懂坦白說不是我的責任, 我還是寫給看得懂的人看就好. 我盡力了. XD
※ 編輯: TonyQ (210.61.209.201 臺灣), 06/27/2020 15:08:05
推
06/27 15:13,
3年前
, 34F
06/27 15:13, 34F
→
06/27 15:18,
3年前
, 35F
06/27 15:18, 35F
→
06/27 15:18,
3年前
, 36F
06/27 15:18, 36F
推
06/27 15:20,
3年前
, 37F
06/27 15:20, 37F
→
06/27 19:45,
3年前
, 38F
06/27 19:45, 38F
→
06/27 19:49,
3年前
, 39F
06/27 19:49, 39F
→
06/27 19:50,
3年前
, 40F
06/27 19:50, 40F
討論串 (同標題文章)