Как организовать занятия в приложении C Sharp? - PullRequest
4 голосов
/ 25 января 2011

Допустим, у меня есть проект Visual Studio, который должен использовать структуру данных бинарного дерева поиска. Поскольку в .NET нет встроенной структуры данных BST, мне придется добавлять классы самостоятельно (как в этой статье ). Это будет включать несколько классов: Node, NodeList, BinaryTree и т. Д. .... поэтому мой вопрос: лучше ли было бы добавить все эти классы в один файл .cs, т.е. вкладывать их, или каждый класс должен быть отдельным файлом? Кажется, немного чище и, возможно, проще повторно использовать классы, если они все вместе в одном файле, нет?

Я просто пытаюсь понять лучшие практики по организации и разработке проектов. Будем благодарны за любые советы или указания, которые вы можете мне указать.

Ответы [ 7 ]

3 голосов
/ 25 января 2011

Самый простой способ использования бинарных деревьев - загрузить и сослаться на библиотеку C5 Collections . Зачем изобретать велосипед?

При этом общее правило - 1 виджет --class / enum / struct / what - для каждого исходного файла. Хорошей практикой (YMMV) является [как правило], чтобы иерархия файловой системы отражала иерархию пространства имен, и сборки должны иметь имена, отражающие пространство имен, которое они содержат.

2 голосов
/ 25 января 2011

Я рекомендую использовать один файл для каждого типа. Нет ограничения в количестве файлов, и один файл для каждого типа действительно помогает найти тип в вашем решении.

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

1 голос
/ 25 января 2011

Как и Джефф Йейтс, я бы использовал один файл для каждого типа. Java навязывает это, а не .NET - но, похоже, это путь к хорошо организованным решениям.

Кроме того, я бы поместил все связанные с BST файлы в отдельный проект в том же решении. Если я вас правильно понял, ваше приложение не о BST, оно просто использует их, верно? Если дело обстоит именно так, отдельный проект - это то, что нужно.

И создавать хорошо именованные и четко определенные пространства имен. Например, MyApplication.Bst для файлов, связанных с BST, и MyApplication.UI для внешнего интерфейса, например.

1 голос
/ 25 января 2011

Я бы рекомендовал использовать некоторые из встроенных структур.Я сомневаюсь, что вам действительно нужно двоичное дерево.

Если вы пишете свои собственные классы, то каждый класс обычно должен быть в своем собственном файле.Используйте внутренние классы всякий раз, когда вам не нужно использовать их извне.(Сделайте их приватными.) Внутренние классы обычно определяются в том же файле, что и внешний.

0 голосов
/ 25 января 2011

Этот вопрос выглядит во многом как другие, уже находящиеся в stackoverflow:

Стандартная практика - иметь один класс на файл,одним заметным исключением являются перечисления, делегаты и другие.

0 голосов
/ 25 января 2011

Я думаю, что помещение нескольких классов в один файл часто делает проект громоздким. Там нет никакого выигрыша в производительности. Если существует чрезвычайно большое количество классов, которые можно сгруппировать, сделайте это с помощью структуры каталогов.

0 голосов
/ 25 января 2011

Я бы создал папку под проектом с именем BinarySearch и поместил их туда.

...