The Pain of OOP, Lecture #7: Reflection and Type Casting [object oriented programming crash course]

preview_player
Показать описание
A lecture for BSc students in Innopolis University.

0:00 Introduction
1:40 What is Type Casting
8:10 Implicit Coupling
13:26 Pattern Matching in Java 16
14:49 C#, Rust, and pattern matching
24:56 Factory Method
34:30 Generating class name from a string
44:12 Classpath Scanning
50:27 Annotations
56:44 Locating methods
59:42 Dependency Injection Container
1:07:48 Dependency Injection without a Container
1:11:37 Polymorphism vs Casting
Рекомендации по теме
Комментарии
Автор

thank you very much. after uncle Bob now you are my second favourite teacher

farrukhjonnazriev
Автор

Most valuable course for OOP! The industry is so full of many misunderstandings and lots of copying of really bad ideas

ChrisAthanas
Автор

18:49 про Swift могу рассказать небольшой анекдот. В языке тоже есть паттерн матчинг, обычно он делается через switch case. И если в вашем enum так много case и в этом switch так много переменных (приплюсуйте сюда еще ассоциированные значения), то в рантайм можно поймать stackoverflow, потому, что компилятор не ожидает такого абьюза со стороны программиста. Но язык при этом поощряет использование инумов.

egormerkushev
Автор

32:00 this section is very confusing, the point is not clear here why factory is bad idea

ChrisAthanas
Автор

21:10 AFAIK Kotlin doesn’t have any pattern matching and I’ve not heard any plans to add it

ChrisAthanas
Автор

Reflection использую каждый день, лучшее изобретение

AlexandroLavichez
Автор

Егор, у вас ошибки в первой части с Type Casting, эти два куска кода ведут себя по разному. В первом случае, выбор, какой метод подсчёта элементов использовать, выбирается во время выполнения метода (в рантайме). Во втором, это уже зависит от типа референса.

Условно, если я напишу

Iterable iterable = List.of(1, 2, 3);


тогда вызова метода List::size не будет

gogenmogen
Автор

19:41 проблема инумов в ООП, мне кажется, в том, что их тип (case) является частью данных, да и сами энумы чаще всего это данные, которые пытаются всеми правдами и неправдами превратить в нормальные объекты, а на деле они должны оставаться простыми контейнерами или DTO.

egormerkushev
Автор

@yegor256
If we talk about the first example (with sizeOf), you suggested make the API user responsible for choosing between 2 overloads.
Like “I know that I have a collection. Oh, the API has an overload, lest do a typecast myself”. But this will make caller side worse, isn’t it? I guess encapsulating the cast into API is better than forcing the API users to do it themselves. Do you consider this a problem?

excommunicado
Автор

На счёт Котлина, то Jetbrains говорили что они не будут добавлять pattern matching, хотя коммюнити их об этом просило. Мол с ним довольно больше проблемы будут на уровне бэкенда компилятора, чтобы его поддерживать нормально. Если не ошибаюсь, то это ещё при Бреславе было. Так что PM вроде в Котлине нет.

ИванРоманов-цэ
Автор

hi sir
are you looking for a professional youtube thumbnails designer ?

ALVISADMAN
Автор

Что-то количество студентов поубавилось. Не ошибусь если скажу, что посещаемость лекций упала в два раза.

bulsond
Автор

Объясните плиз зачем в российском университете лекции на английском?

maximdumbov