Наименование связанных классов и интерфейсов

9

Я создал ObjectParserкласс, который анализирует данные в строго типизированные объекты, используя в IObjectParserDataSourceкачестве источника данных (данные могут быть файлом Excel, текстовым файлом, массивом, строкой запроса и т. Д.).

Примеры моих реализаций IObjectParserDataSource:

  • TextFileObjectParserDataSource
  • ExcelFileObjectParserDataSource

Эти названия классов кажутся мне действительно длинными и запутанными.

Я мог бы назвать их:

  • TextFileDataSource
  • ExcelFileDataSource

Но это вносит определенный уровень двусмысленности, и они не стали так явно связаны с IObjectParserDataSourceпервого взгляда. Это становится важным, потому что определение этих источников данных будет происходить в клиентском коде, и я хочу минимизировать потенциальную путаницу и неопределенность.

Как бы вы назвали эти классы в таком сценарии?

Дэйв Нью
источник
1
Я не думаю, что ваши нынешние имена слишком длинные и запутанные.
AakashM
Я выдвигаю эту идею, но я не рекомендую ее: если вы часто используете одну и ту же строку (например, «ObjectParserDataSource») в своем наименовании, используйте аббревиатуру. ExcelFileOPDS, TextFileOPDS. Это немного экономит время при наборе текста и на экране, но непрозрачно для тех, кто не знаком с кодом.
Бобсон

Ответы:

22

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

Например, будет иметь

пространство имен ObjectParserDataSources
|
| -> класс TextFileSource
| -> класс ExcelFileSource

Или, если коллекция объектов, работающих с / servicing, ObjectParserстанет достаточно большой, я бы создал отдельное дерево папок или проект, предназначенный только для ObjectParser:

namespace ObjectParser
|
|-> class ObjectParser
|-> interface IObjectParserDataSource
|
|-> namespace DataSources
|   |
|   |-> class TextFileSource
|   |-> class ExcelFileSource
|
|-> other stuff...

Внутри любого файла операторы импорта и контекст кода обычно ясно дают понять, что TextFileSourceэто ObjectParserисточник данных. Если в одном и том же фрагменте кода есть несколько классов с одинаковыми именами, вы можете ссылаться на TextFileSourceих полное имя:

var parserSource = new ObjectParser.DataSources.TextFileSource(/*...*/);

Обычно это происходит очень редко, и я не против набрать лишние слова.

IKH
источник
1
Вы сэкономили мне время, печатая тот же самый ответ :)
Майкл Браун
1
+1. Это решение улучшает читаемость без снижения четкости.
Джон Картрайт