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

作者: vi000246 (Vi)   2020-06-24 17:56:01
我現在遇到一個情況 同時跟其他人開發很相似的功能
舉例來說 我跟B同時開發兩個電商網站
一個叫博客來,一個叫蝦皮好了
B已經建好博客來商品列表頁面
我也要建立蝦皮的商品列表 想把B建的博客來頁面拿來用
因為相似度很高,打算把頁面共用的邏輯抽出來
放到common lib
但是這時B也在開發中
如果我重構博客來頁面,他要把code merge回博客來時就要修很多衝突
這時我該做的是,直接複製博客來的邏輯,先把蝦皮商品列表建出來
等兩邊網站都完成,再來重構嗎?
因為現在程式成長幅度已經有點誇張了
單個檔一千行程式碼
我怕等兩邊都完成再重構,會花更多時間
現在就重構會造成merge衝突,而且兩邊開發進度也不一樣
他寫完的code我要用,就重構他的code
可能會重構到沒完沒了
遇到這種情況該怎麼辦呢?
想問有比較好的方法嗎
作者: wulouise (在線上!=在電腦前)   2020-06-24 18:05:00
複製過來refactor, 下一次對方可以考慮用你refactor的
作者: neo5277 (I am an agent of chaos)   2020-06-24 18:09:00
先rebase他的囉
作者: csieflyman (風之驕子)   2020-06-24 18:20:00
他放長假 等你重構完後再回來上班
作者: aria0520 (紫)   2020-06-24 18:27:00
開branch
作者: MOONY135 (談無慾)   2020-06-24 18:30:00
你如果先重構最後他要解很多衝突最後可能會打架
作者: alihue (wanda wanda)   2020-06-24 18:38:00
重構後解完 conflict,可能又有一波重構要做
作者: s06yji3 (阿南)   2020-06-24 18:38:00
為什麼已經做到這樣還要重構?
作者: laputaflutin (很恐怖,不要問)   2020-06-24 18:39:00
你們不是抽出共用函式庫了嗎,怎麼依賴還那麼亂?
作者: NDark (溺於黑暗)   2020-06-24 18:42:00
一千多行就在怕。我前個專案一個檔案三萬行。
作者: ronny1020 (ronny)   2020-06-24 18:46:00
先重構把檔案拆小,變小後要移也比較好移
作者: content71 (羅莉飼養中...)   2020-06-24 18:46:00
三萬應該是html? 如果是JS就很恐怖了
作者: supernow (善甲狼)   2020-06-24 19:37:00
先把抽共用的地方單獨開一個分支讓他merge
作者: Murasaki0110 (麥當勞歡樂送)   2020-06-24 19:41:00
找他討論很難嗎 沒共識就想偷偷來
作者: LeoSW (月夜飄雪)   2020-06-24 19:46:00
先討論兩邊預計要改的地方,盡量先從你一定要用但他已經不太會改的地方開始重構。每次改動盡量小且確保他的原功能沒有問題。最後就是確實執行互相code review確保雙方認知沒有落差。大概是這樣吧最重要的是事前充分討論。很有可能討論完的結論是不需要重構,或者重構的代價相比帶來的好處不合成本
作者: leo5916267 (小葉)   2020-06-24 20:07:00
應該是抽不乾淨吧?你們的情況common已經沒意義了
作者: TAKADO (朕沒給的你不能搶)   2020-06-24 20:42:00
只好使用魔法卡 “算了反正以後不是我維護”
作者: vi000246 (Vi)   2020-06-24 20:42:00
使出反制陷阱 "就是你維護"
作者: TAKADO (朕沒給的你不能搶)   2020-06-24 20:49:00
正常應該是你們要先討論好可以/需要共用的功能,再抽出來作成lib,或是乾脆以對方的頁面為主開發common lib,你沒有先溝通好就開始重構對方的東西,然後說應該要共用,就會升級成政治問題。
作者: vi000246 (Vi)   2020-06-24 21:25:00
我覺得還是時程太趕的關係 不然先討論好共用部份
作者: APTON (瑋瑋)   2020-06-24 21:25:00
題外話,單檔1000多行,應該很多職責不清,建議可以檢查哪邊該抽出方法 介面 類別。
作者: qrtt1 (有些事,有時候。。。)   2020-06-24 21:42:00
反正時程太趕,先擁抱技術債。上線後,營運後再做最後的決定。沒銷量的那個銷毀 (這就是所謂的技術倒債) (逃走
作者: Masakiad (Masaki)   2020-06-24 21:46:00
先請一個架構師
作者: GGFACE (ggface)   2020-06-24 22:10:00
2 phase啊 你先copy一份整理好 他先用原本的改一版 你們之後再看誰要refactor他改過的那包based on你整理好的lib
作者: wulouise (在線上!=在電腦前)   2020-06-24 22:28:00
時程不夠就已東西先完成優先吧,還是兩邊unittest都很完整,refactor完不會破壞對方的邏輯?那就可以順便改
作者: LeoSW (月夜飄雪)   2020-06-24 22:42:00
如果你要改的部分他也在改,其實不太建議直接在這塊抽common lib,因為這代表可能 1. 程式碼沒有拆乾淨,應該先把模組化做好 2. 需求還在變化,還不能確定到底有多高的可重用性,直接各自發展可能會是更好的選項
作者: vi000246 (Vi)   2020-06-24 23:17:00
同意樓上 目前只能稍微整理 讓日後修改不會太痛苦是沒辨法一次做到好
作者: APTON (瑋瑋)   2020-06-24 23:20:00
如果因為時間不足從來就是假議題,因為每一個重要的專案一定都有時程壓力
作者: bjj (夏天好冷冬天好熱)   2020-06-25 01:28:00
重構前先有測試計畫比較重要
作者: Csongs (西歌)   2020-06-25 09:58:00
release還重構,大概就吃飽太閒如果b不願意抽出來 那也沒輒
作者: internetms52 (Oaide)   2020-06-25 13:58:00
你根他都沒時間想comm lib該長怎樣,找另一個人加入,由他來決定要拉什麼出來,並一起討論需求
作者: Ghamu (貓丸)   2020-06-25 17:44:00
先把一個檔案一千行拆一拆再來講吧...
作者: guanting886 (Guanting)   2020-06-25 18:21:00
一個系統套在不同的專案上雖然可能有相同的目的 但最終Ui跟核心、 資料庫會因為專案需求的關係有所變化 你提早重構只能調整部分的比較不會有衝突的地方你所想的不一定會更有效率一千行算不算多 老實說長期維護五萬行以上的專案(不算html/is) 而且都有拆分邏輯之類的情況下我不覺得算多 應該說這也不是用幾行來認定 而且你搞不好行數是虛胖的(如排版上大括號造成的)我覺得你跟他應該是缺一個有共識的整理術讓你在合併上常遇到衝突解不完 但是我覺得可能你一開始就不應該就兩個專案去合併某些介面我覺得你可以跟你朋友討論看看 分享一些作法看看會不會讓兩人執行專案上變得更順不要去做任何偷改或是強迫別人一定要接受你的作法
作者: vi000246 (Vi)   2020-06-25 18:45:00
我還沒開始動工 只是預知道可能的問題先上來問問意見我大概知道要怎麼做了 感謝大大回答
作者: zased (我只是上PTT查資料)   2020-06-27 11:44:00
兩個菜鳥開發又沒有mentor 帶領就是會遇到這種鳥事。建議買書系統性學習 網路上都是片段零碎觀念
作者: yourinfo (...)   2020-06-28 16:32:00
代表common lib不夠common只是在他的code裡加上你的code 這不叫common可以自己先寫一份common的 再請B找時間整合你的這樣才不會拖到兩個人的進度

Links booklink

Contact Us: admin [ a t ] ucptt.com