170 похожих чатов

Повторю пожалуй вчерашний вопрос У меня есть разные классы виджетов типа

Checkbox, Multiselect, куча их.

Для каждого класса есть адаптер, по факту partial над кучей его методов. ManagedCheckboxAdapter, ManagedMultiselectAdapter. Короче, для каждого свой.

По факту юзер всегда импортирует первый класс, а где-то ему прилетает второй.

Я хочу оставить их как есть, но запихнуть дополнительно ссылку в основной класс. Типа
Checkbox.Managed
Multiselect.Managed

Стоит так делать или нет?

18 ответов

26 просмотров

Надо полагать, управляются и вообще живут они совместно?

Самый главный вопрос. Зачем?

Tishka17- Автор вопроса
evle
Надо полагать, управляются и вообще живут они совм...

Да, изменение сигнтары метода виджета требует такого же изменения в алаптере

Tishka17- Автор вопроса
Patrick [in search of work]
Самый главный вопрос. Зачем?

Упростить использование. Сейчас стремные имена и лишний иипорт

Tishka17
Да, изменение сигнтары метода виджета требует тако...

А в чём вообще смысл существования этих Managed?

Tishka17- Автор вопроса
evle
А в чём вообще смысл существования этих Managed?

Там у каждого метода два лишних параметра, чтобы контекст прокинуть. Но при работе внутри контекста, я могу его заранее прокинуть и методы будет вызывать проще

Tishka17
Упростить использование. Сейчас стремные имена и л...

Имена должны быть понятные. Только из за импорта добавлять атрибут ?

Tishka17- Автор вопроса
Patrick [in search of work]
Имена должны быть понятные. Только из за импорта д...

Ну смотри, даже если упростим имена: Checkbox.Managed ManagedCheckbox Что понятнее? Вроде пофиг, но появляется риск что имена вторые разойдутся Дополнительно, лишний импорт. Они скорее всего будут вместе идти по логике. Дополнительно можно задуматься о тайпинге, где-то сразу выводить этот тип попробовать, но пока хз

Tishka17
Там у каждого метода два лишних параметра, чтобы к...

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

Tishka17
Почему смущает?

Потому что это выглядит как внешняя функциональность по отношению к самим виджетам. Но с другой стороны комбинации типа джанговских Form/ModelForm и соответствующих виджетов сделаны так же, поэтому выглядит читаемо. Но чуйке не нравится.

Patrick [in search of work]
Так тайпхинт же. Всм не понять

Что тайпхинт? Тайпхинт не объясняет смысл и не заменяет документацию.

Tishka17- Автор вопроса
evle
Потому что это выглядит как внешняя функциональнос...

Ну условно у виджет появляется две версии: * контексто независимая, которая используется при декларации ui * контекстная в процессе обработки событий

Tishka17
Ну условно у виджет появляется две версии: * конте...

Ну вот что об этом думает SRP тот же? Виджет с одной стороны занят своей работой, с другой — знает что-то о контексте (либо не знает).

Tishka17- Автор вопроса
evle
Ну вот что об этом думает SRP тот же? Виджет с одн...

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

Tishka17
Так нет, он делает одну работу. Обрабатывает событ...

В общем я не могу внятно сформулировать, что именно меня смущают и как бы я сделал иначе, но смущает именно сама идея двух наборов классов. Ссылка сама по себе не смущает.

Tishka17- Автор вопроса
evle
В общем я не могу внятно сформулировать, что именн...

Ну концептуально иначе пришлось бы делать создание виджетов сразу под контекст. Это усложняет апи

Похожие вопросы

Обсуждают сегодня

Ребят в СИ можно реализовать ООП?
Николай
32
Добрый вечер, Пока не совсем понимаю как наладить общение между телеграм ботом и ПО для работы с сим боксом. По самому боту так понял: - Нужен некий баланс, который можно поп...
Magic
6
~ 2m21s  nix shell github:nixos/nixpkgs#stack ~  stack ghc -- --version error: … while calling the 'derivationStrict' builtin at /builtin/derivation.nix:...
Rebuild your mind.
6
Всем доброго вечера. Разрабатываю 32 раз. приложение в Delphi. Столкнулся с тем, что стандартный  TFilestream  не работает с большим файлом > 2 ГБайт (после вызова функции see...
Vadim Gl
16
добрый день. Подскажите, есть сайт на 1.4.7 и я хочу обновиться, особо ничего не меняя. мне выбирать версию 1.4.35 или третью ветку? и можно ли обновлять "как есть", или нужно...
Digital Cat
12
народ, плиз хелп, всю голову сломал себе уже... разве может быть так, что GetProcAddress( GetModuleHandle( "kernel32.dll" ), "SetThreadDescription" ) вернёт ненулевое значение...
Iluha Companets
12
Всем привет! Имеется функция: function IsValidChar(ch: UTF8Char): Boolean; var i: Integer; ValidChars: AnsiString; begin ValidChars := 'abcdefghijklmnopqrstuvwxyzABCDE...
Евгений
44
а плаксы из-под питона умеют только в комфортных условиях что-то выдавить из себя?)
Lencore
9
Кстати, что за тип булеана, который в памяти как 00 для фолса и 01 для тру отображается? Однобайтовый
Serjone
8
ребят подскажите почему матрица не транспонируется? #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <math.h> #include <locale.h> #define N 7 int main() { int...
† C E †
1
Карта сайта