看板 Soft_Job 關於我們 聯絡資訊
※ 引述《pokerhand (pokerhand)》之銘言: : 看著上面的美玉之文 讓我覺得不補充一下細節過意不去 : 先說, 由上面眾多好文, 我已經大概了解要怎麼做了. 感謝各位寶貴的經驗談. : 特別是熱心的lovdkkkk, 來信跟我討論令我受益良多. : --- : 我所在的team 算新人team, 有支援AB兩個 project, 支援的人數一半一半, : 我負責帶支援AB兩個project的新人的技術方面. : 我支援的project A的前輩都是身經百戰的強者, : design pattern跟OO思維到系統架構熟到爛. : 對重構 & 測試先行 & 物件抽象非常在行, 重構在這邊的進行大致上是沒什麼問題的, : 也不用特別去推, 大家都有共識. : 有問題的是支援project B的新人, 向我們反映那邊的code實在是.... : project B的前輩也是相當熱心的在帶支援B的新人, : 但無奈觀念還是在functional programming, 很多寫法在maintain上會出問題而不自知. ^^^^^^^^^^^^^^^^^^^^^^ <- procedural programming functional programming是像F#那些應該更加難以理解的東西... :P Project B可以先把project拆成數個DLL, 然後以DLL為單位重整結構. 首先把core的business object建設出來. 有新功能需要的時候 就先讓老手寫procedual function到library裡, 他們應該會很習慣... :P 在project間的空檔就是修補漁網的時候了. 可以請project A的人 示範如何將procedure code改成OO的method的應用方式. 多改幾次 就可以叫他們自己改看看. 到熟練時就可以直接寫OO了. 最初的時候要求最好放鬆些, 本來的global variable用一個static class暫時存放也無所謂. 這些改了容易有副作用的東西最好等待 全team的能力都提昇到一定程度再作refactor. Interface / common base class也比照處理, 不必太心急. 短期內難免會有效能下降, 但應在可接受範圍. 在拆解成DLL模組的 過程中也等於做了初步的function/method篩選, 轉換成OO的時候 也會清楚一些, 避免一些「藕斷絲連」的情況. 注意整個「改建」工程必須由熟悉Project B的人主導和控制進程, 這人必須熟悉Project B的所有data flow, 要支持OO化, 會不會OO 反而次要... 最好不是Project A的人, 以避免許多技術層面以外 的問題... -- -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.92.4.195