Deutsch
Germany.ruФорумы → Архив Досок→ Программирование

Подарки от программис'тов

17.08.22 12:59
Re: Подарки от программис'тов
 
alex445 коренной житель
в ответ alex445 17.08.22 01:11

Человек завёл себе в бизнес логике кастомные типы данных, типа MyInt, MyString, которые могут получать фокус, быть отформатированы внутри себя (через перегрузку их методов или установку делегатов форматирования), быть отвалидированы, хранить сообщения об ошибках, и т.д. У этих типов есть свойство значения Value, которое хранит и устанавливает конкретное значение int, string и т.д. Но использовать его нельзя (хотя геттер и сеттер у него публичные), т.к. иначе не будет проведена логика валидации, установки фокуса и т.д. А нужно для этого использовать специальные методы, в которых всё это делается. Почему не сделать этого в геттерах и сеттерах Value? Почему свойство открыто для редактирования, если его нельзя напрямую использовать? Почему не сделать его внутренним для класса или сборки, где оно применяется напрямую?


Затем ты пишешь модель представления, в которой обычные типы данных типа int и string заменены этими кастомными типами. И затем байндишь представление на эти кастомные типы данных из бизнес логики. Но напрямую забайндить нельзя - свойство Value же нельзя использовать. Поэтому в модели представления ты делаешь своё свойство Value, в геттере и сеттере которого ты вызываешь вышеупомянутые методы по установке и чтению значений. Короче, чтобы нормально работать с этими чудными кастомными типами, делаешь обёртки вокруг них (в виде моделей представления на каждый такой кастомный тип или ещё как), которые приводят их к божескому виду, который подходит для нормальных GUI фреймворков.


Вроде, сказали, что чел, который это придумал, несколько лет работал один над этим проектом. Поэтому всякие странные поведения, паттерны, отсутствие комментов, документации и прочие прелести "одиноких гениев".

 

Перейти на