我正在開發一個遵循3層體系結構並且其數據訪問層(DAL)由其他人編寫的項目。我檢查了代碼,發現他使用兩個類庫和數據訪問層(DAL)中的一個接口連接到數據庫。界面是IDBManager和類庫是DBManagerFactory和DBManager。在項目中聲明命名空間外的枚舉
在類DBManagerFactory,他宣稱這樣一個枚舉的DataProvider:
using System;
using System.Data;
using System.Data.Odbc;
using System.Data.SqlClient;
using System.Data.OleDb;
public enum DataProvider
{
Oracle, SqlServer, OleDb, Odbc
}
namespace DataAccessLayer
{
public sealed class DBManagerFactory
{
private DBManagerFactory() { }
和接口IDBManager,他用這樣的枚舉:
using System;
using System.Data;
using System.Data.Odbc;
using System.Data.SqlClient;
using System.Data.OleDb;
namespace DataAccessLayer
{
public interface IDBManager
{
DataProvider ProviderType
{
get;
set;
}
string ConnectionString
{
get;
set;
}
所以,我的問題是,在命名空間之外聲明枚舉是一種好方法還是壞方法?我認爲應該在命名空間內聲明枚舉,並通過命名空間在另一個類或其他項目中使用枚舉。請告知標準方法。
將這些類型打包到有意義的命名空間中是一種很好的做法,這樣我們就可以有一個清晰的分離和更好的想法。但是,如果這些類型是常見的,我們不希望類型轉換,那麼你可能會把它們放在命名空間之外。 – 2014-12-03 08:21:27
@SivaGopal - 我無需使用名稱空間就可以看到枚舉的唯一好處是我們可以在其他類中使用它,而無需添加名稱空間的名稱。 – 2014-12-03 09:41:27
Shory版本:是的,它應該在命名空間內;污染全球命名空間的形式很差;它也存在導致衝突的真實風險。 – 2014-12-04 11:08:01