Deutsch

Абасс... обсудите рахитекурту

20.05.24 15:59
Re: Абасс... обсудите рахитекурту
 
alex445 патриот
в ответ AlexNek 20.05.24 13:26, Последний раз изменено 20.05.24 16:05 (alex445)
Похоже для Value нам еще нужен еще UpperLimit, так как LowerLimit всегда 0. /Специально выбрал какое то другое имя чтобы не путатся/

как я понял для каждого значения нужно еще и ограничение или нет?

Да. Любой Param или ParamVolatile имеет свой скажем так глобальный максимум и минимум, который они не могут превышать. И эти максимум и минимум я храню в валидирующем коде, а не в самих Param или ParamVolatile. А у ParamVolatile есть ещё текущий максимум, который он не может превышать, пока этот текущий максимум не изменится. У Param значение одно и оно редко меняется, поэтому оно валидируется "глобальными" максимумом и минимумом. У ParamVolatile же два значения - текущее, и текущий максимум - и они тоже валидируются через глобальные максимум и минимум, плюс текущее значение валидириуется через текущий максимум. Т.е.:


  1. и у Param, и у ParamVolatile все значения валидируются через глобальные валидаторы
  2. значение у Param и текущий максимум у ParamVolatile валидируются через глобальные валидаторы одинаково
  3. клиентский код работает со значением Param и с текущим максимумом ParamVolatile одинаково, т.к. эти значению играют одинаковую роль (если бы ParamVolatile не изменялся в текущих пределах, то всегда был бы равен текущему максимуму - т.е. аналогично просто значению из Param).
  4. текущее значение у ParamVolatile валидируется ещё и через текущий максимум


Это всё говорит о том, что при имплементации этих условий лучше бы для текущего максимума ParamVolatile унаследовать логику работы значения Param. И назвать их одинаково. А вот как конкретно - MaxValue или просто Value - другой вопрос, и больше к удобству или пониманию. Код работать будет с любым названием, если будут удовлетворяться все пункты выше.


По-моему, вы просто не можете себе представить, что за ParamVolatile такой может быть. А это просто - любое значение, которое расходуется и пополняется, и максимальная величина пополнения тоже может изменяться. И максимальная величина пополнения играет ту же роль, и так же обрабатывается многим клиентским кодом (например, он ожидает одинаковое имя свойства, а не делит их на два разных, не производит распознавание и ветвление), как и просто величина для значения, которое не расходуется и не пополняется, а просто есть. Я привёл пример скорости и запаса топлива. Скорость изменяется, но может быть и постоянной в течении какого-то времени, а топливо тратится непрерывно. Т.е. запас топлива более волатильная величина, чем скорость. Плюс топливо можно пополнить, но не более какой-то границы, а саму эту границу можно сдвинуть (у меня бак изменяемого объёма, или я канистры могу с собой взять и тасовать их - не важно).


Можно ещё сказать, что есть просто две величины - менее волатильная и более волатильная. И если менее волательную надо валидировать один раз при любом изменении, то более волатильную - дважды: текущее значение на две границы - волатильную и постоянную, и волатильную границу - на значение постоянной границы.

 

Перейти на