русский
Germany.ruForen → Архив Досок→ Programmierung

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

21.05.24 08:56
Re: Абасс... обсудите рахитекурту
 
alex445 патриот
in Antwort AlexNek 20.05.24 23:12, Zuletzt geändert 21.05.24 09:19 (alex445)

Вы умеете мыслить абстрактно, без "полной картины мира"? Я написал, чего хочу, и предложил свой вариант исполнения. А вы не пытаетесь улучшить его или предложить свой, а постоянно спрашиваете, зачем мне это надо и почему я не делаю так, как привыкли вы.


Я даже представил один вариант "реальной картины мира", когда некоторые объекты могут влиять лишь на значения обычных параметров и максимумы волатильных параметров. Т.е. например та же "бонусная карта клиента" имеет список модификаторов на параметры, и эти модификаторы применяются в цикле типа такого


foreach(var mod in modifiers)
    foreach(var param in params) // params is a List<Param>, where Param and ParamVolatile objects are placed together
        if(mod.ParamType == param.ParamType)
            param.MaxValue += mod.Value;


Если бы param.MaxValue имело бы разное имя в классах Param и ParamVolatile (например Value и MaxValue соответственно), но одинаковое по смыслу, то мне бы пришлось усложнять код - вводить распознавание волатильного и неволатильного параметра, а присвоение значения модификатора делать всё равно одинаково, типа такого


if(param is Param) param.Value += mod.Value;
else if(param is ParamVolatile) param.MaxValue += mod.Value;


В этом нет смысла. Но это лишь одно место, где пришлось бы так усложнять. А таких мест много. Если работа с Value и MaxValue идёт одинаково, т.к. это одно значение по смыслу, то проблема не в имплементации, а лишь в названии свойства. Я могу заменить его в любой момент без изменения кода. Вы же не можете взять в голову задачу лишь из-за смущающего вас названия свойства, хотя уже 10 раз объяснено, что это такое и зачем так сделано. Я вам написал, что можно заменить название MaxValue на просто Value - это вам поможет? Вы ответили, что нет - ведь теперь непонятно, чем отличаются Value и CurrentValue в ParamVolatile. Ну придумайте вариант лучше для названия свойства, но код-то от этого не поменяется.


Ещё можно поиграться с названиями классов. Скажем, не ParamVolatile, а ParamConsumable, или ParamExpendable, или ParamReplenishable. Вам бы это больше помогло? Свойства-то так бы и остались Value и CurrentValue или MaxValue и CurrentValue.

 

Sprung zu