我在我的專案中使用開源庫,并且我知道如何擴展它。但如果有一天我發布它,我希望命名空間名稱是正確的。我檢查了具有命名約定的檔案,但沒有一個描述如何為現有庫的擴展命名命名空間。
例如,我正在擴展SomeLibrary. 它有 namespace SomeLibrary.Types,我想通過添加我的一些型別來擴展它。所以問題是:我應該如何在我的專案中命名命名空間?
我可以使用SomeLibrary.Types命名空間嗎?使用其他名稱空間是否正確,或者我應該將我的庫名稱空間與我擴展的庫的名稱空間區分開來?我已經看到一些擴展現有庫的庫使用相同的名稱空間,例如Microsoft.EntityFrameworkCore.InMemory將Microsoft.EntityFrameworkCore名稱空間用于其UseInMemoryDatabase方法,但我認為這不是一個很好的例子。
如果我不應該這樣命名,您能否建議我應該如何命名專案中的命名空間,以擴展現有的命名空間?
uj5u.com熱心網友回復:
有幾篇關于命名空間指南和最佳實踐的文章。最佳實踐是意見,會隨著時間而改變。
讓我們從關于您在專案中擁有開源的一點開始,您會看到最終會被擴展。
如果可能的話,不要擴展它。它是開源的,允許您在考慮擴展之前做幾件事。首先,如果您為開源撰寫的功能有意義,您可以為它做出貢獻。其次,您可以分叉存盤庫并使用您添加的功能維護自己的副本。
如果必須對其進行擴展,則應將其打包并分發為 NuGet 包。這里有一些關于開源庫的一般指導。我在那里沒有看到的一件事是考慮為您的代碼使用與您正在擴展的代碼相同的許可證。如果你走這條路,這里有一些關于命名空間指南的更多細節。
本案值得注意:
?? DO 前綴命名空間名稱與公司名稱,以防止來自不同公司的命名空間具有相同的名稱。
? 不要為單個應用程式模型中命名空間中的型別賦予相同的名稱。
您遺漏的一點是您是使用實體型別進行擴展,例如介面的類或實作,還是使用擴展方法。這有點不同。
Microsoft Docs 中的這篇文章有一些針對擴展方法的指南
? 不要將擴展方法放在與擴展型別相同的命名空間中,除非它用于向介面添加方法或用于依賴管理。
?? 考慮在與擴展型別相同的命名空間中定義擴展方法,如果該型別是介面并且擴展方法旨在用于大多數或所有情況。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/449941.html
