2009-07-06 1 views
2

Представьте ситуацию, когда у вас есть приложение, которому необходимо импортировать данные из разных источников. Для каждого из этих источников существует отдельная модель (часто не связанная с другими).Группирование в пространстве имен и префиксах Классы

Итак, допустим, что у меня есть компонент программного обеспечения X, который выполняет все импорт, пространство имен соответственно X. В X у меня есть все мои разные парсеры и импортеры, поэтому, возможно, один для txt-файлов, другой для файлов xls и т. Д.

Какой стиль вы предпочитаете:

X.XlsParser 
X.XlsModelObject 
X.TxtParser 
X.TxtModelObject 

против

X.Xls.Parser 
X.Xls.ModelObject 
X.Txt.Parser 
X.Txt.ModelObject 

или я должен просто поставить модель (2-4 единиц) для соответствующего с ource в подпространство имен?

X.XlsParser 
X.Xls.ModelObjectA 
X.Xls.ModelObjectB 
X.TxtParser 
X.Txt.ModelObjectA 
X.Txt.ModelObjectB 

Я не хочу загромождать единое пространство имен со всеми этими несвязанными классами, однако я также не хочу, чтобы такие вопросы, как выяснить, какой парсер моего кода ссылка (должно выглядеть usings).

Что вы думаете о

X.Xls.XlsParser 

какой-то удваивает работу.

Какие соглашения об именах вы придерживаетесь?

+0

На каких языках мы говорим? –

+0

C# в этом случае также может быть любым из семейства c (c, C++, C#, object-c, java ..) –

+0

Это не может быть C, хотя ... у него нет пространств имен. – Zifre

ответ

2

Лично я предпочитаю второй стиль (например, X.Xls.Parser). Мне нравится раздельно разделять отдельные компоненты.

Это также зависит от того, насколько тесно связаны эти компоненты. Если они очень тесно связаны, они должны находиться в одном пространстве имен.

1

Для этого я бы, наверное,

X.Excel.Parser 
X.Excel.ModelObject 
X.Csv.Parser 
X.Csv.ModelObject 

и, возможно,

X.Core.ParserBase 

или

X.IParser 

т.д.

2

Я бы за последний вариант:

Xls.XlsParser 
Csv.CsvParser 

Это похоже на ADO.NET конвенций

SqlClient.SqlConnection 
OracleClient.OracleConnection 

Таким образом, ваши родственные классы сгруппированных по пространствам имен, но если импортировать 2 пространства имен, которые вам не нужно различать, явно указывая пространство имен в вашем коде.

+0

Excel может обрабатывать форматы файлов, отличные от .xls, и поэтому для парсера специально для файлов .xls я бы использовал Xls. –

+0

Справедливая точка зрения, особенно с форматами 2003 и 2007. –

+0

очень разумный ответ. –

0

Я бы также проголосовал за использование пространств имен. Для этого они и есть.

Intellisense будет более полезным, если вы сломаете вещи на пространства имен.