2010-06-04 51 views
11

有沒有人有使用註釋掉的代碼檢查到存儲庫以查找可見性原因的有效替代方法?用於歷史目的的註釋掉代碼的替代方案

我問的原因是我最近與一位開發人員討論了檢查註釋掉的代碼。我的立場是,註釋掉的代碼不應該被檢入到我們的VCS中,因爲它在技術上不是代碼庫的一部分,因此煩人的代碼不值得它所佔用的字節。

他的對應點是,他檢查過的一些註釋掉的代碼仍然說明了他希望在未來修復的一些工作(在這一點上,評論發生在兩年前,但除此之外)。他希望將其保留在代碼庫中,以便他可以輕鬆找到它,儘管目前還不能編譯,但它仍然以全局線顯示解決問題的正確方法。

最後,他同意,有點評論說,代碼不屬於。但是當我們想到替代他的可能時,我們的想法很短。

我能想到的唯一的選擇是:

  • 維基:只是貼吧的地方在wiki上。這樣做的缺點是它會與其他與代碼無關的wiki內容混合在一起,這可能會導致難以搜索它。
  • 索引所有VCS修訂版:這對我來說在很大程度上是理論上的,但是有沒有使代碼庫及其整個歷史可搜索的系統?

有誰知道/使用任何替代品?我的選擇聽起來更像是工作,而不是實際的價值,但是我的理由可能會扭曲這種說法,即將代碼註釋掉無論如何都毫無價值。如果你現在沒有時間去修復它,那麼我不願意留在代碼庫中不夠重要(但是如果沒有可行的替代方案,我會這麼做)。

很抱歉的可怕稱號,我不能想出一個更好的

回答

1

聽起來像你的朋友應該創建一個分支,並嘗試了他的「改進」在那裏。您可以很容易地在這個改進分支和當前源之間進行區分,以清楚地表示他打算進行的更改。

3

我知道代碼已不再使用,但它包含了可能對未來有意思的想法。

我會保存在控制版本系統中,但我會將它保存在一個單獨的文件夾中,如removed-code-to-review-later。然後,我會在檢查它時刪除它。

4

分支在這裏很有用。一種使用SCM的模型是爲每個功能創建一個分支。當分支合併是無痛的時候,這很流行 - 所有SCM都不提供緩解...... :-)

這個想法是,你工作的每個功能都有一個專用分支,並且完全在該分支內工作。當功能完成後,工作,測試,記錄並贏得兩枚奧運金牌等。然後將該分支合併到後備箱中。或者,如果該功能從未完成或被放棄等,該分支將無限期地保持打開狀態。但是代碼保持可見,準備在某天被某人拾起。

這是存儲「正在進行的工作」的好辦法 - 因爲代碼分支可以在臨時代碼可自由查詢。它不需要被註釋掉,因爲正在進行的工作變化只在孤立的分支中進行,而且甚至不需要編譯,因爲這些分支通常在達到成熟度之前不會遷移到持續集成中。

不同於註釋掉的代碼,這些試探性的代碼更改查看和搜索,ameanable代碼分析工具,重構等

在某些環境中,功能和它的分支也可以有一個相關的變化票或問題跟蹤ID。這可以確保重大更改不會丟失,並提供了優先級和組織各種功能的方法,從修復showstoppers到實現某種可能永遠不會看到白天的不同方式的實驗。

對於搜索,一些SCM有一個搜索前端。例如,SVN有SVNSearch - http://sourceforge.net/projects/svn-search/。也有svnquery,它可以搜索歷史和頭。

1

根據我的經驗,檢查註釋代碼的最大原因是開發人員討厭打字太多,以至於他們寧願保留未使用的代碼,以防將來需要鍵入類似的代碼片段。

你的情況有點不同,但我還是說:「使用它或失去它」。如果註釋掉的解決方案修復了一些重要的問題,那麼這將是完成它的一個很好的動機。很容易花更多的時間來解釋爲什麼某些事情不太正確,以及「我們從來沒有時間去解決它」,而不是做它。

最後一點是基於斷言開發者時間是非線性的,並且你開始動手做的事情比每次「預定投影Y的X個小時」提供更多的價值。

有跡象表明,在創造和合並分支很好的版本控制系統。 Mercurial,git等都將能夠做到這一點。即使你不使用其中的一個作爲你的主VCS沒有什麼能阻止你的同事創建本地儲存庫來保存他的實驗英寸

1

在某些情況下它是記錄到一些複雜的/獨特的解決方案是個好主意問題,供參考。但我認爲它不屬於代碼。恕我直言,我認爲某種維基是​​最好的選擇。

如果你還沒有使用的代碼在過去的2年中,你將永遠使用它,如果你這樣做,你仍然應該使用的代碼,爲2歲?如果您需要再次將該邏輯添加到代碼中,最好從頭開始編寫它,因爲在這段時間內很可能會發生變化,您將學到很多東西,還會爲您提供額外的資源,等等

2

一些他檢查中還說明了一些工作,他希望在未來修復註釋掉的代碼

那麼他就應該打開你的錯誤追蹤系統裏低優先級的票,描述了他想要修正,並將當前註釋掉的代碼添加爲該票的評論。現在他可以將這張票分配給自己,而其他任何人都不會爲此感到困擾。

註釋掉的代碼是像任何其他評論:如果不好好保養它往往會失去與代碼,因此它的實用性及其一致性。

0

你的聲明「雖然它不會編譯目前,它仍然表明全球行來解決這個問題的正確方法。」

<>

你的聲明「我的理由是註釋掉的代碼是不值錢呢。」

我看不到的危害在離開的意見,因爲他們往往會提供洞察未來開發商在最初的開發意圖是什麼,並在現有的代碼中的任何電流限制。在不同的系統中存儲增加了他們迷路了未來發展的機會。字節是便宜的,它需要重建另一個開發者意圖的時間$$$。