Несколько явных операций приведения


Этот код прекрасно работает, но выглядит ужасно. Как бы вы улучшить это?

data.Add(((Adress)(((OwnerIDList)owner.Adresses.Value)[0].Adress.Value)).FirstName.Value.ToString());
data.Add(((Adress)(((OwnerIDList)owner.Adresses.Value)[0].Adress.Value)).LastName.Value.ToString());

Почему мы используем .Значение в имя.Значение.Метод toString()?

Имя это DTString объекта (реализует базовый интерфейс для всех типов данных, которые будут храниться в базе данных).



1669
4
задан 8 февраля 2011 в 10:02 Источник Поделиться
Комментарии
2 ответа

по крайней мере, я бы извлечь переменную:

var address = (Adress)((OwnerIDList)owner.Adresses.Value)[0].Adress.Value;
data.Add(address.FirstName.Value.ToString());
data.Add(address.LastName.Value.ToString());

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

П. С.: адреса в английском языке имеет два д.

8
ответ дан 8 февраля 2011 в 10:02 Источник Поделиться

Что со всеми .Значение это потому, что эти переменные определены как nullable< Т > переменных?

В этом случае, вы можете заменить

FirstName.Value.ToString()

С

FirstName.ToString()

Кроме того, место, где я бы хотел быть реальные объекты, которые вы не запрашиваете данные. У вас есть много бросает и много .Стоимость поиска, чтобы получить реальные данные.

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

Я бы изменил эти типы, так что вы могли бы написать:

data.Add(owner.Adresses[0].Adress.FirstName);

Также нам кажется нелогичным, что объект, который вы извлекаете из коллекции адреса должны иметь свойство назвать адрес? Может быть, нужно имя получше.

И как уже упоминалось, есть два " р " в адрес.

2
ответ дан 8 февраля 2011 в 12:02 Источник Поделиться