2010-05-05 23 views
1

你有一些code you want to remove與一個ruby項目的一個過時的功能相關聯。如何確保你擺脫所有的代碼?如何從ruby中的程序中刪除功能?

一些通常有助於重構ruby的指導方針適用,但是還有額外的挑戰,因爲擁有不被任何東西調用的代碼不會破壞任何單元測試。

更新:是否有人編寫過任何可以根據您的版本控制歷史記錄進行猜測的任何內容,如果您有刪除大部分但不是全部代碼的提交,並且可以指出其餘代碼?

回答

2

當前的想法:

  • 找出帶有過時的功能相關的堆的最外面的部分:二進制腳本中調用它,或單元測試調用它。
  • 查找僅由與過時功能關聯的方法調用的方法。我經常爲此使用git grep
  • 從理論上講,運行變異測試和尋找舊的測試套件應用時曾經存在突變抗性的代碼,但現在突變可能會有所幫助。只有你的代碼在第一時間得到了充分測試,它纔有用! (或者你可以使用代碼覆蓋工具,如rcov而不是變異測試)
  • 運行測試套件將確保你沒有刪除任何你不應該擁有的東西!
    • 如果您經常運行測試,使用自動測試可以節省您的時間。
  • 如果您的代碼結構良好,應該更容易找到需要刪除的相關方法。
+1

+1,雖然它有點無聊,因爲幾乎任何有關Ruby(或任何語言)的軟件工程問題的答案似乎都是:「有高質量的測試」。 :-) – 2010-05-05 04:51:36

0

特別是在動態類型語言中,沒有簡單的方法來做到這一點。如果您有單位測試,請感謝編寫它們的開發人員,因爲這會幫助您正確刪除代碼。但你基本上是SOL。刪除代碼,如果它破壞了,放回去,找出破壞的位置,嘗試解決它,然後重複。

0

看看你的代碼覆蓋率。任何未被覆蓋的代碼都可能是您要刪除的代碼的一部分(如果有的話)。 (只要確保你已刪除了測試=])