|
Заблокирован
|
|
Критерии замены свойств класса методами29.06.2020, 00:47. Показов 1834. Ответов 24
Метки нет (Все метки)
Если некое свойство "X" некого класса является вычисляемым - имеет только аксессор геттер (выдаёт значение некого выражения, использующего другие свойства в качестве операндов) и никак не используется внутри класса, то его можно заменить неким методом GetX().
Правильно ли его в общем случае заменять на метод GetX()? В каком случае этого делать не надо? И второй случай. Это вычисляемое свойство "Х" само используется для вычисления другого свойства "Y", которое нигде в классе не используется. Может быть и в этом случае оба этих вычисляемых свойства заменить на методы GetX(), GetY()? То бишь, правильно ли стремиться к тому, чтобы все вычисляемые свойства в общем случае заменять методами? Какие критерии тут нужно учитывать при принятии такого решения? P.S. Наверное, если учитывать ещё оптимальность кода с точки зрения производительности, то во втором случае свойство "Х" нужно оставить свойством с соответствующим приватным полем "х" (поле-то будет рассчитываться 1 раз и использоваться и для геттера свойства "Х" и для метода GetY()). А свойство "Y" преобразовать в метод GetY(). Памяти используется чуть больше (плюс одно поле "x" и одно свойство "X"), но производительность выше. Мда. Выходит, что вопрос этот творческий и в общем случае ничего сказать нельзя?! Или можно?
0
|
|
| 29.06.2020, 00:47 | |
|
Ответы с готовыми решениями:
24
Управление функциями/методами класса через свойство класса Изменить пола одного класса методами другого класса так, чтобы изменения сохранились в первом классе Создание класса с унаследованными методами класса-предка |
|
Заблокирован
|
|
| 30.06.2020, 23:20 [ТС] | |
|
escoult, точно) Работает)
В таком случае остается только Через метод копирования DeepCopy() с использованием MemberwiseClone() не получится, поскольку у свойства Ar сеттера нет.
0
|
|
|
1531 / 532 / 127
Регистрация: 09.01.2018
Сообщений: 1,714
|
||
| 30.06.2020, 23:34 | ||
|
1
|
||
|
Заблокирован
|
||
| 01.07.2020, 00:17 [ТС] | ||
|
Добавлено через 7 минут Ааа... то есть Ar это не массив, а на самом деле это метод - метод get, который при обращении к нему создает новый массив. То есть, поверхностное копирование вполне сгодится для данного случая. Так? Добавлено через 6 минут Вот с таким трудом осознаются самые простые вещи) ![]() Наверное, теперь уже по мотивам 3-х тем по свойствам (я три раза задавал вопросы по свойствам в последнее время) можно бы написать текст для учебника по разделу "Свойства" - всего несколько страниц, но с полной и понятной информацией) ![]() ![]() А может, я один такой тупой?! ![]() ![]()
0
|
||
|
1531 / 532 / 127
Регистрация: 09.01.2018
Сообщений: 1,714
|
||
| 01.07.2020, 00:27 | ||
|
Оппс ![]() Не видел вашего сообщения, что вы уже все поняли. Ну ладно
1
|
||
|
Заблокирован
|
|
| 01.07.2020, 00:37 [ТС] | |
|
То есть, поверхностное копирование вычисляемого свойства есть глубокое копирование, если это свойство вычисляется на основе свойств типа значения. Хотя само вычисляемое свойство может быть при этом и ссылочного типа - возвращает, как метод (ведь свойство это метод!), ссылочный тип. В общем, нужно каждый раз включать голову и смотреть что реально скрывается за букавами кода.
Понятно, что если бы наше вычисляемое свойство вычислялось с использованием объектов (ссылочный тип), то в методе DeepCopy() для нашего объекта нужно было бы после применения метода MemberwiseClone(), произвести глубокое копирование этих ссылочных объектов (может быть с применением методов DeepCopy(), определенных в соответствующих этим объектам классах). По крайней мере, я именно так делал, когда недавно столкнулся с проблемой копирования.
0
|
|
| 01.07.2020, 00:37 | |
|
Сортировка массива по возрастанию/убыванию методами простого выбора и простой замены Изучение свойств энтропии и информации. Определение состояния технической системы методами теории информации получение свойств класса Работа с внутренними методами класса Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Сезонность и суточность закисления почв
anaschu 04.07.2026
200 часов это все равно моловато. Есть ситуации, но нестандартные, когда смена происходит за 5 лет.
Но обычно это 50 лет и более.
Наверное, закисление почвы происходит сезонно в средней. . .
|
В чем ценность человеческого опыта в глобальном смысле?
kumehtar 03.07.2026
Возможно, ценность человека не в том, что он однажды достигает мудрости, а в том, что он становится носителем карты пути. Он знает не только истину, но и последовательность внутренних изменений,. . .
|
интеграция AnyLogic с самописным REST API и переход на Odoo
anaschu 03.07.2026
Успешная интеграция AnyLogic с самописным REST API и переход на промышленную Odoo WMS
Сегодня проделал огромный путь от простой симуляции физических процессов до построения полноценной. . .
|
Поиск всех путей на ориентированном графе. Linux
dcc0 02.07.2026
Переработка старого кода из моей статьи.
Через несколько переработок от PHP кода к C89 (надеюсь, 89).
Но довольно запутанно получилось. Код для Linux.
Но если убрать time и то, что с ним. . .
|
|
Сам себя обучал rest api
anaschu 02.07.2026
Педагогический лайфхак: Почему чистый REST API для ученика намного круче, чем готовые библиотеки
Когда мы отказались от капризного JAR-файла AnyLogic и переписали код на стандартный HttpClient,. . .
|
rest api anylogic - выполнение модели на своём русском сайте
anaschu 02.07.2026
Как подружиться с AnyLogic Cloud API, победить провайдеров и развернуться Java-бэкенд в Docker на бесплатном хостинге: Двухдневный лог борьбы
Всем привет! Хочу поделиться свежим (и довольно. . .
|
Где деньги лежат
kumehtar 02.07.2026
Это - японская подводная лодка I-52 (тип C2, кодовое имя Momi) вышла из Японии в марте 1944 года с миссией в оккупированную немцами Францию (Лорьян). Это была одна из «Янаги»-миссий по обмену. . .
|
Krabik для WoW 3.3.5a, многоязычный
AmbA 02.07.2026
Допилил бота, думаю что окончательно. Изменения:
- добавлена многоязычность
- добавлено снятие скриншотов
- добавлено поддержание бафов хождения по воде (для жреца, дк и шамана)
- и так, по. . .
|