Использование директивы для объявления псевдотипа в C # - PullRequest
5 голосов
/ 08 декабря 2011

Я унаследовал некоторый исходный код, который только начинаю копать, и обнаружил, что предыдущий владелец использовал директиву using в качестве псевдонима для List<T>, но я никогда не видел этого конкретногоподход до.

namespace MyNamespace
{
    using pType1 = List<type1>;
    using pType2 = List<List<type1>>;

     // classes here
}

Оба эти элемента довольно интенсивно используются в коде и также являются типами возврата из нескольких ключевых методов в коде.Я получаю то, что он пытался достичь, используя простое имя, вместо того, чтобы повторять List<type1> и List<List<type1>> снова и снова.Я спорю о том, нужно ли создавать реальный тип, чтобы заменить операторы using, но прежде чем я потратил время, мне было интересно, есть ли какие-либо плюсы / минусы для сохранения текущей реализации.

Ответы [ 2 ]

3 голосов
/ 08 декабря 2011

Как правило, если структура данных представляет некоторую сущность в модели предметной области вашего приложения, она должна получить свой собственный тип; это делает код намного более ясным и понятным. С другой стороны, если вам просто нужна List<List<string>> для промежуточной обработки данных, нет никакого реального преимущества в создании правильного типа для этого.

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

1 голос
/ 08 декабря 2011

Если эта конструкция используется так интенсивно, как вы говорите, я определенно заменил бы ее на () реальные типы (явно выписать List или создать новый тип). Если кто-то изменяет одно из объявлений типа, например

using pType1 = List<type2WhichType1InheritsFrom>;

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

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