Что я должен назвать своими файлами с универсальными определениями классов?

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

 public class MyGenericClass<T> { ... }
 public class MyGenericClass<T, K> { ... }
 public class MyGenericClass<T, K, L> { ... }
 // it could go on forever, but it won't...

Я хочу их всех в том же пространстве имен, но в одном исходном файле в классе. Что я должен назвать файлами? Существует ли лучшая практика?

11
задан Tomas Aschan 9 April 2010 в 23:44
поделиться

5 ответов

Я видел, как люди использовали

MyGenericClass`1, MyGenericClass`2 or MyGenericClass`3

(число - это количество общих параметров).

Я думаю, что это то, что вы получаете как TypeName, когда вызываете .ToString в классе.

9
ответ дан 3 December 2019 в 08:28
поделиться

Обычно я использую Classname.1.cs , Classname.2.cs и т. Д. Где число - это количество общих аргументов, аналогично нотации «1 , используемой в документации по фреймворку (и в документации XML в вашем исходном коде). Иногда у вас также есть класс без общих аргументов (аналогичный ICollection и ICollection` в структуре), а имя файла будет просто именем класса, как и ожидалось. В В отличие от использования обратной кавычки, это имеет то преимущество, что в имени файла не будет недопустимых символов. Не все файловые системы, системы управления версиями и операционные системы допускают использование обратного апострофа в имени.

1
ответ дан 3 December 2019 в 08:28
поделиться

Я думаю, что в сообществе C# вы не найдете большой догмы в пользу отдельных файлов для каждого варианта общего класса с одинаковым именем; я предпочитаю использовать один для случая, который вы описываете, хотя я мог бы увидеть аргументы в пользу того, что вы предлагаете, если код должен быть сложным/длинным для каждого варианта. Обычно я просто использую имя класса, о котором идет речь, в качестве имени файла.

Если бы я собирался разделить варианты на отдельные файлы, я мог бы использовать решение Майкла, хотя это было бы немного болезненно для тех из нас, кто использует инструменты в стиле Unix в командной строке, например, в Cygwin или AndLinux. Я бы, вероятно, использовал подчеркивание или отсутствие знаков препинания. Или что-то вроде 1P, 2P, 3P в качестве суффикса.

1
ответ дан 3 December 2019 в 08:28
поделиться

Я бы поместил их все в один файл, если только они не большие (обычно они не большие, кроме того, у которого больше всего Ts).

На самом деле не существует лучшей практики именования классов, кроме той, что вы найдете в руководстве по .NET framework, поскольку это часть творческой стороны программирования, и, к сожалению, SSCLI восходит только к версии 2.0, так что вы не найдете там много помощи.

1
ответ дан 3 December 2019 в 08:28
поделиться

Когда возникает такая ситуация, я принимаю то же соглашение, которое используется в комментариях XML-документации для универсальных шаблонов C #, которое заключается в использовании { и } вместо < и > , потому что угловые скобки не подходят ни для XML, ни в именах файлов, а в фигурных скобках. Что-то вроде:

MyClass {T} .cs

MyClass {T, K} .cs

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

MyClass`1.cs

MyClass`2.cs

Или смешайте и сопоставьте две схемы в зависимости от ситуации.

2
ответ дан 3 December 2019 в 08:28
поделиться
Другие вопросы по тегам:

Похожие вопросы: