2009-06-29 63 views
8


我必須對現有的C++項目進行增強,使用超過10萬行代碼。
我的問題是如何以及從哪裏開始這樣的項目?
如果代碼記錄不完善,問題會進一步增加。 是否有任何自動化工具用於研究大型項目的代碼流?
如何開始修改大項目

感謝名單,

回答

13

有一本書給你:Working Effectively with Legacy Code

這不是工具,而是各種方法,流程和技巧,你可以用它來更好地理解和修改代碼。它甚至是從大多數C++角度編寫的。

+2

+1,因爲您推薦的書的作者Feathers非常有效地指出了測試的狀態至關重要。 – 2009-06-29 05:39:09

16

使用源代碼控制你碰任何東西之前!

+0

是的,這是至關重要的,所以+1,儘管@ nader的答案更具有爭議性,所以我也贊同它---)。 – 2009-06-29 05:39:53

2

正在運行DoxygenEXTRACT_ALL標記設置爲記錄代碼庫中的所有關係。它不會幫助你完成代碼流程,但希望它能夠對整個應用程序的結構和設計有所瞭解。

3
  • 先研究一下現有的接口。
  • 寫測試,如果他們缺席,或擴大已經寫好的。
  • 修改源代碼。
  • 運行測試以檢查修改是否打破舊的行爲。
2

如果您可以在PC上運行代碼,則可以嘗試通常從性能分析輸出生成調用圖。

也可以交叉引用工具,如cscope,ctags,lxr等可以幫助很多。一個

花一些時間閱讀,建築類圖,甚至添加到你了很長時間才理解的代碼部分的意見是對越來越熟悉的代碼庫,並準備修改步驟/擴展。

3

還有一種不錯的書,目前在網絡上免費提供的,關於面向對象的再造:http://www.iam.unibe.ch/~scg/OORP/

+0

立即想要提到這本書,當我看到問題的標題:) +10 zim2001。 – DaveFar 2011-08-28 09:23:43

3

本書"Code Reading"通過迪米迪斯·斯皮內利斯包含了大量的建議有關如何獲得關於更大的概述,並深入瞭解,未知的項目。

第六章是sonely側重於主題(搭接大型項目)。另外關於工具(第9章)和體系結構(第8章)的章節可能會爲您提供很好的提示。

然而,這本書是關於理解(通過閱讀)「代碼」。它沒有直接處理維護步驟。

2

你需要做的第一件事是理解代碼是如何工作的。閱讀哪些文檔,然後觀察程序在調試器下運行。如果你看到主要的功能/循環,然後慢慢地深入到程序中,你可以很好地瞭解事物的運作方式。確保你寫下你的發現,讓其他人在你有更好的職位後開始追蹤。

1

一位非常優秀的奧地利程序員曾告訴我,爲了理解程序,您首先必須瞭解程序使用的數據結構。

3

我會做的第一件事是試圖找到產品的要求

這種尺寸的產品在沒有要求的情況下開發幾乎是不可想象的。

通過仔細閱讀要求,您將能夠:

  • 得到的產品是什麼的感覺(因此代碼)至少應該做
  • 看到的只是如何好(或不好)的代碼實際上滿足這些要求

否則你只是在看代碼,想推測開發商的意圖......