Допустим, у меня есть класс A
с элементом данных info
, который имеет пользовательский тип enum
. info
позволяет мне вывести много информации, которая мне нужна при использовании класса A
, используя switch
для info
. Например, я могу захотеть получить string
версию info
, более общий short_info
(несколько значений info
, сгруппированных по одному значению short_info
) и т. Д.
Вот два подхода, которые я могу себе представить, и, насколько я понимаю, об их соответствующих преимуществах и недостатках:
- Создание методов в
A
, которые выполняют switch
на info
Преимущество: меньше элементов данных в A
, поэтому меньше места для храненияНедостаток: методы должны вызываться каждый раз для значений, которые не меняются между вызовами, что может привести к более медленному выполнению - Создание элементов данных, инициализированных во время построения и обновленных, если
info
изменяетсяПреимущество: более быстрый доступ к значениям, нет необходимости в дополнительных вычислениях при каждом вызове геттераНедостаток: больше места для хранения
Один из этих двух подходов обычно лучше? Зависит ли это от того, можно ли изменить элемент данных info
после инициализации или какой-то другой фактор? Или есть лучший способ сделать это?