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

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

05.08.22 01:58
Re: Подарки от программис'тов
 
alex445 коренной житель
in Antwort alex445 03.08.22 21:48, Zuletzt geändert 05.08.22 02:41 (alex445)
Кто-нибудь встречал такой кейс, что базовые типы, типа строк, чисел, булевых и прочих (но не все) переписаны, в них добавлена встроенная валидация, способность определять, можно ли их отрисовывать (на основе встроенной авторизации и аутентификации), присутствуют состояния и сообщения об ошибках (т.е. в "базовых" типах заведена куча полей, логики, они сами из себя представляют лютую иерархию наследования)? И все остальные модели строятся на этих кастомным "базовых" типах.

Щас ещё глянул - как я писал, эти базовые типы наследуются от другого базового, у которого есть уникальный идентификатор GUID. И от этого базового наследуются вообще все типы - и строки, числа, булевы и т.п. данные, и всякие более высокоуровневые, типа меню, таблиц, отдельных строк таблиц, форм. При этом форма может состоять из строк и чисел, но все они наследуются от одного базового типа с полем уникального идентификатора. Т.е. получается, что все элементы и данные в приложении имеют зачем-то свой GUID.


Но этого мало. В этот самый базовый тип встроена логика по аутентификации и правам (нужно ли быть залогиненным, чтобы видеть этот объект, и имеет ли юзер достаточно для этого прав), по валидации и сообщениям об ошибках валидации (да, на каждое данное и каждый объект вообще), по фокусировке (объект может получить фокус в UI), знает своего родителя в визуальном дереве (т.е. например поле "имя пользователя" знает, что его родитель - форма залогинивания), и ещё много чего. Т.е., повторю, эту функциональность имеет абсолютно каждый объект в программе - от простого числа, до целой формы.


По-моему, в проекте нарушены потоки управления. Вместо привычного, скажем, "форма залогинивания или объект пользователя управляет видимостью своих полей, проводит их валидацию и показывает ошибки", существует какой-то дикий треш, в котором каждый сам собой управляет, валидируется и предоставляет сообщения об ошибках. Это вообще ООП или что? Где инкапсуляция, где границы ответственности данных и объектов? Такое ощущение, что все данные всех объектов отделены от них и представляют из себя огромную кучу из атомарных данных со своими идентификаторами и встроенной независимой функциональностью. При этом они всё же объединены в формы и объекты, но типа для вида - всё равно эти формы и объекты ими не управляют.


Делали явно не от мира сего. Мне трудно представить себе какой-то уникальный процесс на фабрике в реальном мире, который бы моделировался подобной конструкцией. Нахрена иметь абсолютно уникальные айдишники для абсолютно всех данных, которые существуют, скажем, лишь на протяжении одной сессии? И всё это дерьмо ещё и логируется через каждые 3-5 строчек кода. Ну и что даст чтение логов через месяц, где будет отображено, что данное с айди таким-то при обработке в форме с айди таким-то получило ошибочные данные с айди таким-то? Я же не смогу воссоздать эту ситуацию и продебажить её - айди же каждый раз разные, даже для одинаковых данных.

 

Sprung zu