Checkbox, Multiselect, куча их.
Для каждого класса есть адаптер, по факту partial над кучей его методов. ManagedCheckboxAdapter, ManagedMultiselectAdapter. Короче, для каждого свой.
По факту юзер всегда импортирует первый класс, а где-то ему прилетает второй.
Я хочу оставить их как есть, но запихнуть дополнительно ссылку в основной класс. Типа
Checkbox.Managed
Multiselect.Managed
Стоит так делать или нет?
Надо полагать, управляются и вообще живут они совместно?
Самый главный вопрос. Зачем?
Да, изменение сигнтары метода виджета требует такого же изменения в алаптере
Упростить использование. Сейчас стремные имена и лишний иипорт
А в чём вообще смысл существования этих Managed?
Там у каждого метода два лишних параметра, чтобы контекст прокинуть. Но при работе внутри контекста, я могу его заранее прокинуть и методы будет вызывать проще
Имена должны быть понятные. Только из за импорта добавлять атрибут ?
Ну смотри, даже если упростим имена: Checkbox.Managed ManagedCheckbox Что понятнее? Вроде пофиг, но появляется риск что имена вторые разойдутся Дополнительно, лишний импорт. Они скорее всего будут вместе идти по логике. Дополнительно можно задуматься о тайпинге, где-то сразу выводить этот тип попробовать, но пока хз
Меня немного смущает, что это в отдельный набор классов запихнуто, но идею понял. В целом идею со ссылкой прямо в классе я бы считал нормально с учётом объяснений где-нибудь в документации (а без документации идею с тем, что это за Managed не понять. Так что ссылка в целом выглядит уместно.
Почему смущает?
Так тайпхинт же. Всм не понять
Потому что это выглядит как внешняя функциональность по отношению к самим виджетам. Но с другой стороны комбинации типа джанговских Form/ModelForm и соответствующих виджетов сделаны так же, поэтому выглядит читаемо. Но чуйке не нравится.
Что тайпхинт? Тайпхинт не объясняет смысл и не заменяет документацию.
Ну условно у виджет появляется две версии: * контексто независимая, которая используется при декларации ui * контекстная в процессе обработки событий
Ну вот что об этом думает SRP тот же? Виджет с одной стороны занят своей работой, с другой — знает что-то о контексте (либо не знает).
Так нет, он делает одну работу. Обрабатывает события в контексте. Просто технически контекстов много и при этом передавать каждый раз его вломы
В общем я не могу внятно сформулировать, что именно меня смущают и как бы я сделал иначе, но смущает именно сама идея двух наборов классов. Ссылка сама по себе не смущает.
Ну концептуально иначе пришлось бы делать создание виджетов сразу под контекст. Это усложняет апи
Обсуждают сегодня