2008-09-24 129 views
4

當您需要接管別人的軟件項目時,我想知道您的經驗 - 當原始軟件開發人員已經辭職時更是如此。項目轉換

回答

3

例,其中原開發者移交項目之前闊葉總是最有趣的是:你被困在未知狀態的代碼庫中。我總覺得有趣的是,新開發人員經常盡最大努力評論代碼設計的糟糕程度:他們忘記了老開發人員可能受到的限制,他們可能會被迫做出的捷徑。俗話說的是舊的dev ==糟糕的開發。你們認爲什麼: 我甚至會把這稱爲一種正式的不良做法:對那些在我們面前的人口齒不清。

我儘量採取儘可能務實的方法:學習代碼庫,徘徊一下。嘗試理解需求和代碼之間的關係,甚至根本就沒有明確的初始關係。當你意識到爲什麼他們這樣做或者做了某些事情的時候,總是會有「啊哈的時刻」。如果你仍然相信某些事情是以錯誤的方式實施的,那麼儘可能做一些重構。並隔離你不能改變的代碼片段:單元測試他們使用模擬框架。

向維護開發人員保佑。

+0

Old dev == bad dev。你打的恰到好處(指一般情緒)。最糟糕的是新的開發者可能會使用REWRITE軟件! – 2008-09-24 08:13:43

5

我們最大的成功就是「維護」一切。在通知期間,請離開開發人員幫助您記錄團隊/公司wiki中的所有內容,並查看您是否可以與他/她進行代碼審閱,並在執行解釋部分的審閱時向代碼添加註釋。最好是「接管」開發者在離職者的監督下在代碼中寫下評論。

0

我們實際上有一套指定的「可交付成果」,必須在場才能接管項目。

如果我們有機會嘗試推動開發該項目的團隊中的一個人,這樣我們就可以在我們的小組接管代碼之前得到一些第一手知識。 (在什麼@Guy寫的線)

話雖這麼說,對我來說最重要的部分是:

  • 某種類型的噩的高級概述(圖紙?)的代碼做什麼。
  • 輕鬆訪問問究竟是誰寫的代碼

這對我來說是人的問題,是α,ω-接管代碼時和項目

3

我曾經加入了一個團隊,已經從外包交付了一堆蒸汽廢物。原始項目 - 基於Java,Struts,Hibernate | Oracle的多媒體內容管理器結構良好(看起來好像是幾個人的工作,配對編程,明智地使用設計模式,以及一些單元測試)。那麼別人繼承了該項目,並不斷地複製粘貼功能,放鬆了業務規則,修補,分支,直到它成爲一個巨大的意大利麪條怪物喜歡精緻的雕琢一塊代碼:

List<Stuff> stuff = null; 
if (LOG.isDebugEnabled()) 
{ 
    stuff = findStuff(); 
    LOG.debug("Yeah, I'm a smart guy!"); 
    for (Stuff stu : stuff) 
    { 
     LOG.debug("I've got this stuff: " + stu); 
    } 
} 
methodThatUsesStuff(stuff); 

隱藏之中的其他輝煌別出心裁。

我馴服經患者重構獸(提取更多的時間的方法和類),從時間註釋代碼時,重組的一切,直到代碼庫由30%縮水,越來越多的管理隨着時間的推移。

1

我不得不多次接管別人的不同程度的質量代碼。因此,提示:

  • 花精力去採取任何一塊顯著信息的結構性票據,從分鐘一:利益相關者,業務規則,代碼和文檔位置等的名稱最好是奉獻一個新的螺旋筆記本,所以如果必須的話,你可以把頁面撕掉。

  • 利用市場上更好的免費索引和桌面搜索工具之一(Google桌面搜索,MS Windows搜索可以)。添加所有文檔,電子郵件,代碼位置。

  • 在開發任何文檔分析之前:找到您可以在網絡上以電子方式獲得的所有內容並打印出文檔,並簡單閱讀它。即使在未完成的草稿中也有驚人的有用信息。

  • 隨心所欲地映射代碼,架構等。

  • 由於較少的記錄和維護系統,你不可避免地會有絕望的時刻,可能會推動你進入拖延模式。特別是在你的第一天或者第一週,你的頭腦必須消化的新信息量非常大。在這些時候,很高興有人提醒你(或者自己動手),放鬆一下,先把重點放在重要的事情上,然後回到試圖獲得理解而不是嘗試跳躍的小步驟。

  • 保持記筆記,製作圖表,繪製豐富的圖片,思維導圖。這對消化大量新信息非常有幫助,而這些新信息大多是混亂的。

喜,祝你好運!