Абасс... обсудите рахитекурту
что я два раза вызываю один и тот же код для currentValue
не вижу особых проблем в этом
Мне больше не нравится, что проперти имеют логику.
Короче, оставлю у себя зелёный вариант - он требует меньше всего переписывания и по сути лишь рефакторинг без изменения логики по отношению к варианту в первом посте.
что я два раза вызываю один и тот же код для currentValueне вижу особых проблем в этом
Мне больше не нравится, что проперти имеют логику.
По классике в пропертях вполне делается валидация. Просто у меня зависимые проперти, поэтому некоторые из них валидируют не только себя, а и другие проперти. А проперти совсем без логики не имеют смысла.
Просто вы привыкли, что валидация, это когда юзеру сообщаешь, а он исправляет.
не обязательно. Просто имя ожидается в этом случае другое. Типа: GetValidObject
К тому же "по параметрам" можно сделать вывод что функция должна быть статической.
А проперти совсем без логики не имеют смысла.
ну да public поле будет гораздо лучше
Но данном случае "SetValue()" было бы более наглядным.
А проперти совсем без логики не имеют смысла.ну да public поле будет гораздо лучше
В Unity 3D всё на публичных полях делается, что касается работы с их редактором:
public string myName = "none";
Это для облегчения сериализации, как они объясняют.
В варианте с new я отказываюсь от механики родительского свойства и пишу свою миханику - т.е. хранится в поддерживающем поле потомка. Тут мне нужно лишь свойство с тем же именем. В варианте с override - в поддерживающем поле родителя, но тогда мне не нужно отдельное поле в потомке.
зачем тебе в варианте с new вообще родительское свойство?
Пушо клиентский код вызывает свойство с этим именем у объектов родительского и потомкового класса одинаково. Но вариант с new мне не нравится - я буду использовать с override.
В Unity 3D всё на публичных полях делаетсяЕсли кому нравится играться в навозе пусть играется.
Я говорю, у них на это есть своя причина - сериализация. И это только для классов, скажем так, view. Можно писать и привычным способом - с публичными пропертями и приватными полями. Но требуется немного костылей.
А причём вообще тут Unity 3D? Как хотят пусть так и делают.
вообще то называть это архитектурой у меня язык не поворачивается. Слишком мелко.
Типа в озере на доске катался, а после говорить как на море тренировался.
Нифига, я уже морской волк! ))
CurrentValue = CurrentValue; // чтобы принудительно вызвать валидацию CurrentValueСразу не проходит reviewнужна валидация, значит делаем, а не вызываем side эффект с комментарием.
А те, кто ревью делают, понимают хоть, что происходит и зачем это нужно, или тупо по дядибобовским методичкам шпарят? )))
А то разное бывает. "На ноль делить нельзя" - иногда можно. "Поля не должны быть публичными" - если надо, то можно. "Земля вращается вокруг Солнца" - а мой личный опыт подсказывает, что это Солнце вращается вокруг Земли.
А причём вообще тут Unity 3D? Как хотят пусть так и делают.
Ну, я в принципе более-менее подходящий ответ на свой вопрос нашёл. Теперь можно и побарагозить. ))
понимают хоть, что происходит и зачем это нужно
Может все по разному понимают
Хотя даже и понимать не нужно:
1. строка без коммента выглядит бессмысленной
2. коммент говорит о том, что мы используем side эффект
Вполне достаточно для зловония
а мой личный опыт подсказывает,
Если личный опыт сильно расходится с устоявшимися нормами, то требуется дополнительное исследование.
При этом, в настоящее время, вероятность того, что личный опыт правильнее устоявшихся норм довольна мала.
начал читать и вспомнил Библию:
Посрамились мудрецы, смутились и запутались в сеть: вот, они отвергли слово Господне; в чем же мудрость их?
Иеремия 8:9 — Иер 8:9
Как то слишком много умного в простейшей задаче.