2013-09-23 53 views
0

在我的工作中,我最近不得不重寫一個類的實現以適應它,以便它能與我們的新系統一起工作。然而,我需要保留舊的實現,因爲它仍然在使用舊系統的其他地方使用。重寫舊類的命名約定?

該類被稱爲SecurityManager。現在,我正在創建一個新類SecurityManager,它將執行相同的操作,但基於較新的表。我的問題是,我不知道該怎麼稱呼這個新的。

我稱它:

  • NewSecurityManager
  • SecurityManager2
  • SecurityManager360
  • SecurityManager2000
  • SecurityManager23_09_2013

是否有已經解決了這個問題befo任何命名約定並提出了一些命名方案?

謝謝

+0

叫它SecurityManager,但把它放在不同的命名空間下? – jbabey

+1

'SecurityManager2'是你列表中唯一一個很好的例子。 'NewSecurityManager'改變了Intellisense中的排序,其他的則過多。誰想寫'SecurityManager23_09_2013 manager = new SecurityManager23_09_2013();'? –

+0

@jbabey但是,難道不能簡單地將我的問題轉移到我稱之爲新命名空間的東西上嗎? –

回答

0

最好不要改變類名,而是在舊類中添加新接口。這使增量工作變得更容易(你可以逐漸讓舊方法調用新方法,最終消失)。但是,這並非總是可行的。

另一種可能性是,花一些時間來改變舊的類OldSecurityManager(或移動到OldSomething命名空間)。通過這種方式,新課程可以以穩定的方式「安裝」,而不用擔心會永遠留在你身邊的醜陋名字(或直到SecurityManager3)。

聯合解決方案是在新的接口前提供一個具有舊接口的代理 - 這也使增量工作成爲可能,並且更加安全(特別是對於TDD)。