Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 04.04.2017, 14:37   #1
Ship_1
Форумчанин
 
Регистрация: 10.02.2014
Сообщений: 526
По умолчанию Свойство или операция?

Здравствуйте, уважаемые знатоки. Периодически задаюсь одним вопросом.
Есть, например, у меня запись или объект. Есть у него, соответственно, свойство. Например, дата. И есть integer, который я иногда использую самостоятельно, а иногда вычисляю другую дату: Дата2 = Дата1 - integer. Лучше всё-таки добавить дополнительное свойство, в котором определить эту дату или не перегружать в таких простых случаях запись/объект лишними полями и пользоваться просто вычитанием?
Поясню для наглядности конкретным примером.
Вариант 1.
Код:
TArrival = record
  Date: TDate;
  Reserved: Integer;
end;
При условии, что Arrival.Reserved нужен иногда и сам по себе, лучше использовать именно такую запись и в ходе выполнения программы для вычисления даты бронирования выполнять
Код:
Arrival.Date - Arrival.Reserved
или всё же дополнить её полем DateReserved?
Код:
TArrival = record
  Date, DateReserved: TDate;
  Reserved: Integer;
end;
Я не знаю программирование в таких тонкостях, как многие здесь, поэтому хотелось бы узнать мнение профессионалов и понять разницу, если она есть где-нибудь в глубине машины для этих случаев.
Ship_1 вне форума Ответить с цитированием
Старый 04.04.2017, 14:43   #2
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Да о машине лучше не париться пока нет причин это делать )

Чем меньше изменяемых полей, тем проще писать/читать/поддерживать код. Поэтому для вычисления лучше сделать функцию или read-only свойство в классе вместо поля.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 04.04.2017, 14:47   #3
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

зависит от предполагаемого использования (частоты применения, требований к быстродействию).

вар 1. "медленная" запись и быстрое чтение всего и вся.
три поля + методы(процедуры) СОГЛАСОВАННОГО изменения всех полей.
нужно учитывать возможность возникновения рассогласования данных, обычно исключается путем исключения "прямого" доступа на запись полей.

вар 2. "быстрая" запись и медленное чтение НЕКОТОРЫХ полей.
два поля + методы(функции) вычисления недостающих.
программа — запись алгоритма на языке понятном транслятору

Последний раз редактировалось evg_m; 04.04.2017 в 14:56.
evg_m вне форума Ответить с цитированием
Старый 04.04.2017, 14:48   #4
Ship_1
Форумчанин
 
Регистрация: 10.02.2014
Сообщений: 526
По умолчанию

А если программно свойство не меняется, то в чём смысл явного объявления, что оно read-only?
Ship_1 вне форума Ответить с цитированием
Старый 04.04.2017, 14:51   #5
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Чтоб нельзя было изменить случайно. Ну и я имел в виду свойство без поля, то есть тоже самое, что функция/метод.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.

Последний раз редактировалось Alex11223; 04.04.2017 в 14:54.
Alex11223 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
логическая операция или(||) Мой повелитель Общие вопросы C/C++ 2 24.03.2016 22:42
операция мод применимо к типу float,проверка числа- целое или дробное all_is_fear Помощь студентам 3 17.11.2011 16:16
Побитовая операция ИЛИ. Visual Basic. amfin Помощь студентам 1 27.12.2010 20:44
Получение списка Database Names или AliasNames в свойство GRIPH Компоненты Delphi 0 14.05.2010 17:11
ошибка VBA при попытке использовать свойство или метод chanchikela Microsoft Office Access 0 26.03.2008 23:17