Если функция возвращает значения различных типов ...
От: ChainEG  
Дата: 19.08.09 09:35
Оценка:
Есть набор типов

typedef ... Type;

typedef ... TypeA; 
typedef ... TypeB;
typedef ... TypeC;


Есть функция, которая может возвращать значения различных типов.
Type Get(const char *sz);


Нужно инициализировать переменные различных типов
TypeA A;
TypeB B;
TypeC C;


Обычно, я делал так:
// Способ 1
A=(TypeA)Get("A");
B=(TypeB)Get("B");
C=(TypeC)Get("C");


Но вот, в чужом коде увидел такой прием:
// Способ 2
(Type&)A=Get("A");
(Type&)B=Get("B");
(Type&)C=Get("C");


Какой способ лучше?
Способ 1, на мой взгляд, интуимтивно понятнее.
Его недостаток — требуется следить, куда кастить каждое значение, и не ошибиться при этом.
Если названия типов TypeA, TypeB ... имеют разную длину, то код неаккуратно выглядит.

Способ 2 интуимтивно менее понятен, но, как мне кажется лучше читаем, так как четко видна основная цель выпажения: A=Get("A").
Не нужно следить за типами: все значения кастятся в один ти тот же тип.
И оформление кода получается более аккуратным

И все же, какой способ предпочтительнее?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.