簡體   English   中英

將方法標記為單個項目已過時

[英]Mark method as obsolete for a single project

由於我們的代碼庫工作方式,我被建議不要編輯共享代碼庫中的某些方法。 相反,我決定制作一個新方法來調用舊方法,並完成我們團隊想要該方法的新工作。 我預見的問題不是團隊中的每個人都知道新方法並且仍然使用共享代碼庫中的舊方法。

TLDR:

共享代碼庫具有SharedCode.Function。

我創建了OurCode.Function,它執行一些操作,然后調用SharedCode.Function。

我無法編輯SharedCode.Function或它包含項目。

是否有可能將SharedCode.Function標記為在我們的項目中作為編譯器警告以某種方式或以其他方式標記OurCode.Function基本上替換它?

編輯:

可能有必要提到 - 這些是日志記錄函數,所以如果dev意外地調用SharedCode.Function而不是OurCode.Function,唯一的結果是我們捕獲的數據少於我們想要的數據,它仍然可以編譯並運行正常。 這是我想嘗試使其成為編譯器警告的一個主要原因,因此任何不知道使用新函數的開發人員都會發現。

最簡單的方法是將ObsoleteAttribute作為屬性添加到方法中。 確保包含適當的解釋:

[Obsolete("Method1 is deprecated, please use Method2 instead.")]
public void Method1()
{ … }

我認為適配器模式可以在這個特定場景中創造奇跡。 基本上,您最終會在OurCode和SharedCode之間創建一個抽象。

這隔離了對SharedCode函數的訪問,以便只有適配器才能使用共享代碼的功能。 可能最終適配器中的某些函數只是提供了一個傳遞,但其中一些函數將具有需要應用的額外邏輯(例如在您詢問的場景中),並且讓適配器使用它你很容易執行。

所有客戶端代碼都被強制使用適配器,因為它們無法直接訪問共享代碼。

如果您有權訪問源代碼,我建議使用其他人指出的Obsolete屬性。 但是由於您無法訪問代碼庫,我認為在代碼和不可訪問的代碼之間進行抽象層是非常有益的。

現在顯然我沒有充分考慮你的場景是否真的有意義實現,所以不要盲目開車,但希望這會給你一些想法! :)

參考四人幫書或查看以下資源:

https://martinfowler.com/bliki/RequiredInterface.html

https://www.dofactory.com/net/adapter-design-pattern

了解適配器模式

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM