PTT推薦

[請益] 這種情況要怎麼重構

看板Soft_Job標題[請益] 這種情況要怎麼重構作者
vi000246
(Vi)
時間推噓26 推:27 噓:1 →:46

我現在遇到一個情況 同時跟其他人開發很相似的功能

舉例來說 我跟B同時開發兩個電商網站

一個叫博客來,一個叫蝦皮好了

B已經建好博客來商品列表頁面

我也要建立蝦皮的商品列表 想把B建的博客來頁面拿來用

因為相似度很高,打算把頁面共用的邏輯抽出來

放到common lib

但是這時B也在開發中

如果我重構博客來頁面,他要把code merge回博客來時就要修很多衝突

這時我該做的是,直接複製博客來的邏輯,先把蝦皮商品列表建出來

等兩邊網站都完成,再來重構嗎?

因為現在程式成長幅度已經有點誇張了

單個檔一千行程式碼

我怕等兩邊都完成再重構,會花更多時間

現在就重構會造成merge衝突,而且兩邊開發進度也不一樣

他寫完的code我要用,就重構他的code

可能會重構到沒完沒了

遇到這種情況該怎麼辦呢?

想問有比較好的方法嗎


--

※ PTT留言評論
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 210.64.53.88 (臺灣)
PTT 網址

wulouise06/24 18:05複製過來refactor, 下一次對方可以考慮用你refactor的

neo527706/24 18:09先rebase他的囉

csieflyman06/24 18:20他放長假 等你重構完後再回來上班

aria052006/24 18:27開branch

MOONY13506/24 18:30你如果先重構最後他要解很多衝突最後可能會打架

alihue06/24 18:38重構後解完 conflict,可能又有一波重構要做

是啊 不管先重構還是後重構 這番功夫省不了的

s06yji306/24 18:38為什麼已經做到這樣還要重構?

重覆的code太多了 大概兩個頁面有50%重覆 再加上我的頁面 以後要維護會花很多心力

laputaflutin06/24 18:39你們不是抽出共用函式庫了嗎,怎麼依賴還那麼亂?

這只是比喻 實際情況是更小的功能重覆 不是專案層級

NDark06/24 18:42一千多行就在怕。我前個專案一個檔案三萬行。

ronny102006/24 18:46先重構把檔案拆小,變小後要移也比較好移

content7106/24 18:46三萬應該是html? 如果是JS就很恐怖了

supernow06/24 19:37先把抽共用的地方單獨開一個分支讓他merge

Murasaki011006/24 19:41找他討論很難嗎 沒共識就想偷偷來

LeoSW06/24 19:46先討論兩邊預計要改的地方,盡量先從你一定要用但他已經不

LeoSW06/24 19:46太會改的地方開始重構。每次改動盡量小且確保他的原功能沒

LeoSW06/24 19:46有問題。最後就是確實執行互相code review確保雙方認知沒有

LeoSW06/24 19:46落差。大概是這樣吧

LeoSW06/24 19:48最重要的是事前充分討論。很有可能討論完的結論是不需要重

LeoSW06/24 19:48構,或者重構的代價相比帶來的好處不合成本

謝謝L大 我應該會這樣做 先把我預計改的地方跟他說 如果他也要動到這部份 就先copy一份 不改原始的程式碼

leo591626706/24 20:07應該是抽不乾淨吧?

leo591626706/24 20:08你們的情況common已經沒意義了

※ 編輯: vi000246 (219.68.118.128 臺灣), 06/24/2020 20:36:11

TAKADO06/24 20:42只好使用魔法卡 “算了反正以後不是我維護”

vi00024606/24 20:42使出反制陷阱 "就是你維護"

TAKADO06/24 20:49正常應該是你們要先討論好可以/需要共用的功能,再抽出來

TAKADO06/24 20:49作成lib,或是乾脆以對方的頁面為主開發common lib,你沒

TAKADO06/24 20:49有先溝通好就開始重構對方的東西,然後說應該要共用,就會

TAKADO06/24 20:49升級成政治問題。

vi00024606/24 21:25我覺得還是時程太趕的關係 不然先討論好共用部份

APTON06/24 21:25題外話,單檔1000多行,應該很多職責不清,建議可以檢查哪

APTON06/24 21:25邊該抽出方法 介面 類別。

vi00024606/24 21:25事先規劃好 就不會有現在的問題了

qrtt106/24 21:42反正時程太趕,先擁抱技術債。上線後,營運後再做最後的決

qrtt106/24 21:42定。沒銷量的那個銷毀 (這就是所謂的技術倒債) (逃走

Masakiad06/24 21:46先請一個架構師

GGFACE06/24 22:102 phase啊 你先copy一份整理好 他先用原本的改一版 你們

GGFACE06/24 22:10之後再看誰要refactor他改過的那包based on你整理好的lib

wulouise06/24 22:28時程不夠就已東西先完成優先吧,還是兩邊unittest都很完

wulouise06/24 22:28整,refactor完不會破壞對方的邏輯?那就可以順便改

LeoSW06/24 22:42如果你要改的部分他也在改,其實不太建議直接在這塊抽commo

LeoSW06/24 22:42n lib,因為這代表可能 1. 程式碼沒有拆乾淨,應該先把模組

LeoSW06/24 22:42化做好 2. 需求還在變化,還不能確定到底有多高的可重用性

LeoSW06/24 22:42,直接各自發展可能會是更好的選項

vi00024606/24 23:17同意樓上 目前只能稍微整理 讓日後修改不會太痛苦

vi00024606/24 23:17是沒辨法一次做到好

APTON06/24 23:20如果因為時間不足從來就是假議題,因為每一個重要的專案一

APTON06/24 23:20定都有時程壓力

bjj06/25 01:28重構前先有測試計畫比較重要

Csongs06/25 09:58release還重構,大概就吃飽太閒

Csongs06/25 10:04如果b不願意抽出來 那也沒輒

internetms5206/25 13:58你根他都沒時間想comm lib該長怎樣,找另一個人加

internetms5206/25 13:58入,由他來決定要拉什麼出來,並一起討論需求

Ghamu06/25 17:44先把一個檔案一千行拆一拆再來講吧...

guanting88606/25 18:21一個系統套在不同的專案上雖然可能有相同的目的 但

guanting88606/25 18:21最終Ui跟核心、 資料庫會因為專案需求的關係有所變

guanting88606/25 18:21化 你提早重構只能調整部分的比較不會有衝突的地方

guanting88606/25 18:21 你所想的不一定會更有效率

guanting88606/25 18:25一千行算不算多 老實說長期維護五萬行以上的專案(

guanting88606/25 18:25不算html/is) 而且都有拆分邏輯之類的情況下我不覺得

guanting88606/25 18:25算多 應該說這也不是用幾行來認定 而且你搞不好行數

guanting88606/25 18:25是虛胖的(如排版上大括號造成的)

guanting88606/25 18:26我覺得你跟他應該是缺一個有共識的整理術

guanting88606/25 18:27讓你在合併上常遇到衝突解不完 但是我覺得可能你一開

guanting88606/25 18:27始就不應該就兩個專案去合併某些介面

guanting88606/25 18:29我覺得你可以跟你朋友討論看看 分享一些作法看看會

guanting88606/25 18:29不會讓兩人執行專案上變得更順

guanting88606/25 18:29不要去做任何偷改或是強迫別人一定要接受你的作法

vi00024606/25 18:45我還沒開始動工 只是預知道可能的問題先上來問問意見

vi00024606/25 18:45我大概知道要怎麼做了 感謝大大回答

zased06/27 11:44兩個菜鳥開發又沒有mentor 帶領就是會遇到這種鳥事。建議買

zased06/27 11:44書系統性學習 網路上都是片段零碎觀念

yourinfo06/28 16:32代表common lib不夠common

yourinfo06/28 16:33只是在他的code裡加上你的code 這不叫common

yourinfo06/28 16:38可以自己先寫一份common的 再請B找時間整合你的

yourinfo06/28 16:39這樣才不會拖到兩個人的進度