2
比方說,我有一個名爲foobar的庫包。如何拆分大包而不破壞客戶端代碼?
隨着時間的推移它變得又大又沉重。
幸運的是這可分離,我設法其功能拆分爲兩個獨立的包富和酒吧 - 大多數客戶端只需要使用一個或另一個。
由於我的圖書館已在使用的許多客戶,兼容性我還是想保持foobar的包作爲一個代理在兩個FOO和酒吧發現目前的功能。
在Go中如何實現這一點?浮現在腦海
一種方法是在foobar的每個結構/功能FOO和酒吧創建別名。所以,如果富定義F()
和酒吧定義B()
,我會在foobar的:
var (
F = foo.F
B = bar.B
)
但我希望有一個更容易/清潔的方式。
謝謝,我很害怕這個。這很不幸,因爲隨着軟件的發展,這是一種自然現象,並且在包括我的許多情況下,出現新版本(破壞API)是一個成本太高的解決方案。 – Jan
不會'輸入MyType foo.MyType'和'輸入OtherType bar.OtherType'主要工作?雖然我可以看到,嚴重干擾方法。嗯。 – Vatine
@Vatine是的:所有的方法都丟失了。另外:類型開關和類型斷言會失敗,反射可能會中斷。所以:不,這不是「主要工作」。 – Volker