
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

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
там как бы намекает,что у вас более одного тайпа для сущности и вы начинаете мне втирать какую-то дич

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 кастомера, один типа частное лицо,другой юр лицо
а вы решили а че будет один обьект с енамом внутри
и буду хранить сразу и название компании и имя и прочее дерьмо
и тип указывать юр лицо или физ
и в зависимости от типа выбирать что показывать в тайтле страницы имя или название компании
то я бы ваш код на ревью реджектнул
и вот допустим этот кейс
класс такси - цвет машины, класс машины, квалификация водителя (профессионал, новичок ...)