@kotlin_lang

Страница 152 из 982
Ivan
25.05.2017
15:10:03
ну если бы у нас был бы ооп холивар,я бы сказал что не кошерный ооп

но это не к ооп

хотя как бы да,это не кошерный ооп

егора на вас нет

Google
Dmitriy
25.05.2017
15:11:55
я правильно понимаю, что лучше enum не использовать, потому что это дерьмо?

Ivan
25.05.2017
15:12:34
если это филд дата класса который вы юзаете для определения "типа",то да,это дерьмо тк нарушает ооп

это как знаете свич по типам

? animufag ?
25.05.2017
15:13:39
лол никак не могу понять о чём речь. можно пример как делать плохо

Dmitriy
25.05.2017
15:14:18
data class Message(type: MessageType, text: String) - никогда так не делайте

enum class MessageType { VOICE, TEXT, VIDEO}

? animufag ?
25.05.2017
15:15:11
ага... а нужно тип sealed для 3х месаджей?

Ivan
25.05.2017
15:15:25
если вы потом делаете switch по MessageType,то у вас хреновый ооп

очень такой хреновый

? animufag ?
25.05.2017
15:16:26
не думал что это ооп.

Ivan
25.05.2017
15:16:27
да, sealed class Message { data class TextMessage(...) data class VoiceMessage(...) ... }

ну вы когда на джаве пишите

вы же свич по типам не делаете?

Google
Ivan
25.05.2017
15:16:47
так и тут

? animufag ?
25.05.2017
15:16:47
а если есть 2 поля с енумами?

Ivan
25.05.2017
15:17:09
2 поля с енамами?

? animufag ?
25.05.2017
15:18:40
привести пример?

Ivan
25.05.2017
15:19:05
ну

? animufag ?
25.05.2017
15:21:46
ну допустим у нас есть поездка или билет там указывается тип багажа и класс комфорта (эконом/бизнес/етц)

не очень жизненно с типом багажа но допустим такое бывает

Ivan
25.05.2017
15:22:26
вот даже часть из clean code: G23: Prefer Polymorphism to If/Else or Switch/Case

Юра
25.05.2017
15:22:56
Ну это немного другое. Тут по факту не тип самого объекта, а тип одного из его полей.

Dmitriy
25.05.2017
15:22:58
как еще пример: класс такси - цвет машины, класс машины, квалификация водителя (профессионал, новичок ...)

? animufag ?
25.05.2017
15:23:23
вот норм

Dmitriy
25.05.2017
15:23:26
Ну это немного другое. Тут по факту не тип самого объекта, а тип одного из его полей.
об этом и речь. разговор о том, что плохо использовать enum как поле data class

Ivan
25.05.2017
15:23:33
речь идет про то,что если у тебя есть сраный меседж

у него внутри лежит тайп

то ты гавнокодер

вот и все

речь идет про основной признак

? animufag ?
25.05.2017
15:23:51
окей

Ivan
25.05.2017
15:23:53
если так угодно

если их более одного,это другой кейс

Google
? animufag ?
25.05.2017
15:24:06
буду делать класс меседж то наверное сработает тригер

Ivan
25.05.2017
15:24:30
речь про основной тип/критерий

понятно,что ты не будешь городить 700 классов для каждого цвета машины,но сорян,но цвет машины скорее всего будет не совсем то енамом

Umren
25.05.2017
15:25:29
у него внутри лежит тайп
Тип в типе это говнокод?

Ivan
25.05.2017
15:25:48
data class Message(type: MessageType, text: String) - да

я бы даже сказал лютый гавнокод

Umren
25.05.2017
15:26:17
А, понял о чём ты

Я думал любой)

Он определяет тип так что ли через поле?

Ivan
25.05.2017
15:27:31
ну речь про то,что если вы юзаете енам как в кейсе с мессаджем

то все у вас хреново

? animufag ?
25.05.2017
15:27:40
аа лол у вас аватарки одинаковые. я думал что сам с собой спорит.

Dmitriy
25.05.2017
15:28:34
одному из них нужно на аву логотип dart

? animufag ?
25.05.2017
15:28:47
в основном мне больше нравится fun chtototam(enum: Enum) = when (enum) {

Ivan
25.05.2017
15:28:53
не,я пока не поддался этой балалайке

? animufag ?
25.05.2017
15:29:00
чем лезть в методы енума

Ivan
25.05.2017
15:29:01
хотя флатер вроде как такой модный весь прям реакт

? animufag ?
25.05.2017
15:29:42
ну я про этот ооп подход

заменять все ветвления на полиморфизм

Google
Ivan
25.05.2017
15:30:13
не нужно впадать в крайность и заворачивать все в полиморфизм

но когда у вас в проекте половина кода - свичи по типам

это зашквар

Dmitriy
25.05.2017
15:30:39
не нужно впадать в крайность и заворачивать все в полиморфизм
так я и пытаюсь это обьяснить, что есть грань.

Ivan
25.05.2017
15:31:04
самое крутое что видел,это интерфейс Item с методом isItem возвращающим INT(не бульку,а инт карл) и потом по нему матчилось в адаптере

так я и пытаюсь это обьяснить, что есть грань.
ваш кейс с меседжем прекрасный пример того,что так делать не надо

а когда вы начинаете перечислять про машину

Dmitriy
25.05.2017
15:31:41
блин, recycleView Adapter так работает, и ничего

Ivan
25.05.2017
15:32:07
там как бы намекает,что у вас более одного тайпа для сущности и вы начинаете мне втирать какую-то дич

блин, recycleView Adapter так работает, и ничего
у нормальных людей там тоже обмазано немного и этой логики нет в адаптере,а все делегировано в что-то вроде фабрики

Admin
ERROR: S client not available

Ivan
25.05.2017
15:32:40
но да ладно

Dmitriy
25.05.2017
15:33:26
я про то, как recycle view понимает, какой из ViewHolder использовать

Ivan
25.05.2017
15:33:41
полиморфизм :D

бинд уже

а создание - фабрика/anything else

но да,в эту фабрику/что-то еще кидается сраный viewtype из адаптера

но

это адаптер,который по своей природе занимается адаптированием разных данных в примерно общий вид (view)

я понимаю,что часть из присутствующих тут работает в аутсорсе и у них банально нет требований по коду таких

Google
Ivan
25.05.2017
15:37:15
да и в продуктовых компаниях не везде есть какие-то требования к коду в этом плане

тесты то не все даже пишут

ну кстати к вашему примеру про машину,это примерно если бы вы хранили в одном из полей объект,в котором у вас лежал бы инт и тип его

который мог быть например цветом в инте, номером телефона или размером багажника

вот примерно такая аналогия

? animufag ?
25.05.2017
15:41:46
так есть поле

в нём объект

в объекте инт

и его тип является цветом в инте

Ivan
25.05.2017
15:52:22
вы опять втираете мне дич

цвет в инте это уже цвет

ему тип не нужен

я говорю про то,если у вас в зависимости от филда,в котором хранится тип объекта различается способ работы с этим обьектом,то печалька у ревьювера должна быть

например

если вы в зависимости от типа берете разные филды в качестве имени например

ну типо у вас есть 2 кастомера, один типа частное лицо,другой юр лицо

а вы решили а че будет один обьект с енамом внутри

и буду хранить сразу и название компании и имя и прочее дерьмо

и тип указывать юр лицо или физ

и в зависимости от типа выбирать что показывать в тайтле страницы имя или название компании

то я бы ваш код на ревью реджектнул

и вот допустим этот кейс

класс такси - цвет машины, класс машины, квалификация водителя (профессионал, новичок ...)

Страница 152 из 982