Не используйте слишком много параметров в универсальных типах
Обновлен: Ноябрь 2007
TypeName |
AvoidExcessiveParametersOnGenericTypes |
CheckId |
CA1005 |
Категория |
Microsoft.Design |
Критическое изменение |
Критическое |
Причина
Внешне видимый универсальный тип имеет более двух параметров типов.
Описание правила
Чем больше параметров типов содержит универсальный тип, тем сложнее знать и запоминать, что представляет каждый параметр типа. Это обычно становится очевидным при одном параметре типа, как в List<T>, и в ряде случаев при двух параметрах типов, как в Dictionary<TKey, TValue>. Если используется более двух параметров типов, большинство пользователей начинают испытывать большие трудности, например, TooManyTypeParameters<T, K, V> в C# или TooManyTypeParameters(Of T, K, V) в Visual Basic.
Устранение нарушений
Чтобы устранить нарушение этого правила, не используйте при разработке более двух параметров типов.
Отключение предупреждений
Не следует отключать предупреждение из этого правила, если просто необходимо использовать более двух параметров типов. Использование универсальных типов в синтаксисе, который легко понимать и использовать, сокращает время, необходимое для обучения, и ускоряет адаптацию новых библиотек.
Пример
В следующем примере показан класс, определяющий три параметра универсальных типов, что является нарушением этого правила.
Imports System
Namespace Samples
' Violates this rule
Public Class Tuple(Of T1, T2, T3)
End Class
End Namespace
using System;
namespace Samples
{
// Violates this rule
public class Tuple<T1, T2, T3>
{
}
}
using namespace System;
namespace Samples
{
// Violaties this rule
generic <typename T1, typename T2, typename T3>
public ref class Tuple
{
};
}
Связанные правила
Коллекции должны реализовать универсальный интерфейс
Не объявляйте статические элементы в универсальных типах
Не следует раскрывать универсальные списки
Не вкладывайте универсальные типы в подписи членов
Универсальные методы должны предоставлять параметр типа
Используйте экземпляры обработчика универсальных событий
Используйте универсальные методы, если это уместно
См. также
Ссылки
Универсальные шаблоны (Руководство по программированию на C#)