Size: a a a

Kotlin Community

2020 March 09

AN

Alexander Nozik in Kotlin Community
Страшно, это когда вы используете даун-каст для того, чтобы залезть в закрытое поведение. Типа List as MutableList.
источник

AT

Alexey Tkachenko in Kotlin Community
Alexander Levin
Т.е. в общем-то снова сводится, есть ли контроль над всеми подтипами или нет. Есть - не страшно. Нету - страшно.
Неа. Сводится к тому, надо ли модифицировать класс при изменении набора типов
источник

n

neikist in Kotlin Community
Alexey Tkachenko
А есть пример? Чота не соображу, что имеется в виду
Маркерные интерфейсы?
источник

AN

Alexander Nozik in Kotlin Community
В С++ модно с собой таскать строковые метки, но это ничем не лучше.
источник

QH

Quantum Harmonizer in Kotlin Community
Alexander Nozik
Страшно, это когда вы используете даун-каст для того, чтобы залезть в закрытое поведение. Типа List as MutableList.
или Iterable as Collection
источник

AL

Alexander Levin in Kotlin Community
Alexey Tkachenko
Неа. Сводится к тому, надо ли модифицировать класс при изменении набора типов
Так если есть контроль, то это уже вкусовщина. В одном случае просто в новом наследнике тебя попросят реализовать функцию, в другом - попросят расширить when до exhaustive.
источник

AN

Alexander Nozik in Kotlin Community
Quantum Harmonizer
или Iterable as Collection
Вот это не всегда. Если мне нужен доступ по индексу и я хочу его оптимзирировать, я вполне могу проверить не является ли Iterable листом. А вот если я мутировать эту штуку начинаю - это нарушение контракта.
источник

AN

Alexander Nozik in Kotlin Community
Тут вообще тонкая грань, конечно
источник

QH

Quantum Harmonizer in Kotlin Community
Alexander Nozik
Вот это не всегда. Если мне нужен доступ по индексу и я хочу его оптимзирировать, я вполне могу проверить не является ли Iterable листом. А вот если я мутировать эту штуку начинаю - это нарушение контракта.
Никто не гарантировал, что листоспецифичные методы не бросают исключение. Или что они вообще есть.
источник

AT

Alexey Tkachenko in Kotlin Community
Alexander Levin
Так если есть контроль, то это уже вкусовщина. В одном случае просто в новом наследнике тебя попросят реализовать функцию, в другом - попросят расширить when до exhaustive.
Скорее всего, в обоих случаях это нарушение OCP, но хорошо это или плохо в каждом конкретном случае — вот это уже как раз вкусовщина
источник

AN

Alexander Nozik in Kotlin Community
Quantum Harmonizer
Никто не гарантировал, что листоспецифичные методы не бросают исключение. Или что они вообще есть.
В принципе да, хотя это какая-то экзотика
источник

AL

Alexander Levin in Kotlin Community
Alexey Tkachenko
Скорее всего, в обоих случаях это нарушение OCP, но хорошо это или плохо в каждом конкретном случае — вот это уже как раз вкусовщина
Ну, OCP вроде про не особо контролируемое расширение, так что тут уже просто неприменима идея :)
источник

(

( in Kotlin Community
Alexander Nozik
Вот это не всегда. Если мне нужен доступ по индексу и я хочу его оптимзирировать, я вполне могу проверить не является ли Iterable листом. А вот если я мутировать эту штуку начинаю - это нарушение контракта.
Наброшу: если хотите доступ по индексу, то и функцию заставляйте принимать Collection, а не Iterable, чтобы грязью занимался вызывающий метод
источник

AT

Alexey Tkachenko in Kotlin Community
(
Наброшу: если хотите доступ по индексу, то и функцию заставляйте принимать Collection, а не Iterable, чтобы грязью занимался вызывающий метод
+1
источник

AL

Alexander Levin in Kotlin Community
(
Наброшу: если хотите доступ по индексу, то и функцию заставляйте принимать Collection, а не Iterable, чтобы грязью занимался вызывающий метод
*чтобы грязь была другая, ибо у коллекций индексов тоже нет
источник

AL

Alexander Levin in Kotlin Community
Но идейно согласен, что лучше сразу лист просить.
источник

(

( in Kotlin Community
Alexander Levin
*чтобы грязь была другая, ибо у коллекций индексов тоже нет
Ой, да, не коллекция а лист
источник

AN

Alexander Nozik in Kotlin Community
(
Наброшу: если хотите доступ по индексу, то и функцию заставляйте принимать Collection, а не Iterable, чтобы грязью занимался вызывающий метод
Ну нет. Мы говорим об отпимизации на месте. Это дело грязновато с точки зрения проектирования, но без него тоже никуда
источник

AN

Alexander Nozik in Kotlin Community
Опять-таки от размера системы зависит. В маленьком приложении, когда все контралируешь сам, разумеется можно сделать чисто. А вот когда апишки внешние, тут уж все не просто.
источник

AM

Andrew Mikhaylov in Kotlin Community
Ух ты, в тви в https://twitter.com/mobileunderhood Алексей Михайлов из IceRock. Это те чуваки, которые котлин мультиплатформу в массу толкают. По идее, должно быть интересно.
источник