Используйте методы в классах - PullRequest
2 голосов
/ 23 ноября 2011

У меня есть два класса.Пусть они будут каталогом и файлом, например.Есть мои собственные классы, не являющиеся частью .NET Framework.Итак, в каталоге есть поле заголовка и список файлов.Файл также имеет несколько полей.

Где мне разместить методы, которые будут возвращать список файлов по названию каталога, например, в классе Directory или в классе File?

, то есть, какое из них лучше:

public List<Files> Directory.GetFiles(string directoryTitle){...}
public List<Files> File.GetFilesByDirectory(string directoryTitle){...}

и почему?

Ответы [ 4 ]

4 голосов
/ 23 ноября 2011

Две мысли:

Во-первых, это каталог, который знает о листинге файлов, поэтому он должен там жить.

Во-вторых, попробуйте придерживаться интерфейсов для ваших типов возвращаемых данных - вместо этого IListиз списка.Это дает вам больше гибкости для возврата различных типов списков и для модульного тестирования.

0 голосов
/ 23 ноября 2011

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

0 голосов
/ 23 ноября 2011

То, куда вы их на самом деле поместили, является вашей собственной прерогативой, но я бы сказал, что более семантически целесообразно использовать первую версию в этом случае: Directory.GetFiles.Инфраструктура NET фактически предоставляет класс Directory, который вы можете использовать в качестве примера, содержащий такой метод.

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

0 голосов
/ 23 ноября 2011

Я бы сказал, во-первых, лучше

public List<Files> Directory.GetFiles(string directoryTitle){...} 

Поскольку сам файл не должен знать, где он находится, а каталог знает, какие файлы он содержит.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...