русский

ИИ для программиста?

05.10.24 08:44
Re: ИИ для программиста?
 
alex445 патриот
in Antwort Срыв покровов 05.10.24 08:32, Zuletzt geändert 05.10.24 08:51 (alex445)
Далее. В классе, где я использую эти типы, вы применяете дженерик метод.
из дженерика вызывается метод конкретного класса applyDataFromString
Без ифов и прочего колхоза.
Наверняка это какой-нибудь пэттерн, я их не могу запомнить.

Хорошо. Тогда у вас получается, что на каждую задачу во внешнем классе (Converter и других, где будет использоваться тип MyType) каждый новый созданный тип (MyType2, MyType3 и т.д.), а также все старые должны добавить поддержку этого внешнего использования в видео своего метода (ApplyDataFromString и подобных). Тогда это ещё хуже - все новые созданные типы должны отслеживать, где и как они используются. Или я не так понял?


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


Ну и всё равно интерфейс не то ограничение, которое нужно - как я уже сказал, он не гарантирует, что не придёт тип, который не нужен, но который тоже реализует этот интерфейс. Если бы был просто список разрешённых типов, было бы лучше. А перегрузка метода как раз такой список и даёт, хоть и весьма костыльным способом.


Интерфейс помогает в проблеме оповещения, если идти в обратном порядке - от создания использования до дописывания реализации недостающих интерфейсов. Но в вашем примере создаётся ещё больше возни с отслеживанием других вещей. А кроме того, он громоздкий.

 

Sprung zu