Страница 10 из 19

: 11 ноя 2020, 15:44
NightlyRevenger
Newfag, так я уже посмотрел :ohyou:
В шарпе у типа есть вой тип, я про это писал :tohyou:
https://docs.microsoft.com/en-us/dotnet ... ew=net-5.0
Мне было бы не комфортно полагаться на строковое представления типа на проде

12 дней успешности

: 11 ноя 2020, 15:53
Newfag
NightlyRevenger писал(а): 11 ноя 2020, 15:44 Мне было бы не комфортно полагаться на строковое представления типа на проде
А какая разница в каком представлении хранить идентификатор для типа? Строка же используется просто для идентификации, эту строку в тип нельзя скастить, а если есть типы с одинаковыми именами (в разных модулях например), то такая интерполяция даст что-то типа "OtherModule.String" для типа из другого модуля.
В свифте динамически типы нельзя создавать или изменять, вот в обжс можно было взять метатип и что угодно с ним делать, хоть наследование поменять :ps5bug:

: 11 ноя 2020, 15:59
NightlyRevenger
Newfag писал(а): 11 ноя 2020, 15:53 А какая разница в каком представлении хранить идентификатор для типа?
Такая разница, что в строку можно записать всё что угодно и как угодно, а Type это точно тип :ps5bug:

12 дней успешности

: 11 ноя 2020, 16:07
Newfag
NightlyRevenger писал(а): 11 ноя 2020, 15:59 в строку можно записать всё что угодно и как угодно
На клиентской стороне передается тип, джуниор свифт девелупер тупа не сможет что-то другое передать, защита от дурака на уровне языка :slepicwin: :ps5bug:

: 11 ноя 2020, 16:07
NightlyRevenger
Newfag, люблю строгость в типах :ps5bug:

Отправлено спустя 1 минуту 26 секунд:
Newfag, ты мне лучше скажи, эту задачу реально на собеседовании не решают? :hmmm:
Её же без проблем должен мочь решить любой, кто пишет на языке хотя бы месяц :mario:
Или у вас там совсем зеленые джуны?

12 дней успешности

: 11 ноя 2020, 16:31
Newfag
NightlyRevenger, был один чувак, который под айос 9 лет пишет, не решил :kaz3:
Другой чувак твой первый подход использовал с сохранением одной кложуры, но когда я попросил зарегать еще один тип, все сломалось, а дальше он тупил и ниче не сделал :huang:
Полностью так никто и не решил, ну я эту задачку недавно добавил, всего где-то кандидатам 7и ее давал.
И это еще самый простой пример, дженерик протоколы и всякие прикалюхи с ними не спрашиваю :kaz3:
Как я заметил, дженерики вообще не очень много кто использует, ну максимум в каком-нить фреймворке, в который их уже завезли, типа Rx, Combine, какие-нить DI, сетевые либы...
У нас на проектах как минимум сетевой слой на дженериках и декларативная верстка UI, так что базу знать надо :ps5bug:
NightlyRevenger писал(а): 11 ноя 2020, 16:09 Её же без проблем должен мочь решить любой, кто пишет на языке хотя бы месяц
Чтобы уметь решать такие задачи нужно сначала знать что так вообще можно, столкнуться с проблемой и найти способы решения, большинству это тупа не надо, сделают как проще, не задумываясь о хоть каком-то переиспользовании кодовой базы или улучшения подходов, снижения времени разработки и тд :ps5bug:

: 11 ноя 2020, 16:39
NightlyRevenger
Newfag писал(а): 11 ноя 2020, 16:31 Чтобы уметь решать такие задачи нужно сначала знать что так вообще можно, столкнуться с проблемой и найти способы решения,
С такой проблемой сталкиваешься в любом проекте немногим больше хеллоуворлда :ps5bug:

12 дней успешности

: 11 ноя 2020, 17:05
Newfag
NightlyRevenger писал(а): 11 ноя 2020, 16:39
Newfag писал(а): 11 ноя 2020, 16:31 Чтобы уметь решать такие задачи нужно сначала знать что так вообще можно, столкнуться с проблемой и найти способы решения,
С такой проблемой сталкиваешься в любом проекте немногим больше хеллоуворлда :ps5bug:
Но делают зачастую все на отъебись :ps5bug: Вот простой пример - создать таблицу с разными ячейками, все привыкли делать как в этом туториале https://medium.com/@stasost/ios-how-to- ... f91a206429 - огромная портяна иф/елсов или свич/кейсов:

Изображение

Плюс тонна кастов, ну хоть додумались свои модельки для каждого типа ячейки использовать, уже успех :ps5bug:
А что если в таблице 100 разных ячеек? А что если какую-то ячейку нет возможности использовать внутри, а нужно получить из какого-нить сдк? Как обрабатывать тапы, опять строчить портяну? С размерами опять портяна? А что если в разных кейсах нужно использовать разных наследников таблицы (например при показе в фулскрине или в экншите), копипастить эти портяны?

Я сто лет назад написал штуку, которая умеет регать тип ячейки на тип модельки, пишешь что-нить типа:

CODE: Выделить всё

dataController.registerCell(MyTableViewCell.self, dataType: MyModel.self) { definition in
    definition.size = 44
    definition.configureHandler = { context in
        context.cell.textLabel?.text = context.item // MyTableViewCell & MyModel here
    }
    definition.tapHandler = { context in
        print(context.item) // MyModel here
    }
}
Ячейки регаются в таблицу на лету, можно использовать с любой таблицей, можно вынести этот код и переиспользовать с разными таблицами в разных местах :mcavoy:
Плюс этот же подход перенес на коллекшнвью и стеквью, дальше больше - понял, что портяны все равно присутствуют и перешел на дженерик протоколы, где ты тупа создаешь типизированный конфигуратор и пробрасываешь в этот дата контроллер, код стал еще чище.
И это лишь самый простой пример на ебаных таблицах, с которыми вообще никаких проблем быть не должно, но постоянно возникают :ps5bug:

: 11 ноя 2020, 17:21
NightlyRevenger
Newfag писал(а): 11 ноя 2020, 17:05 И это лишь самый простой пример на ебаных таблицах, с которыми вообще никаких проблем быть не должно, но постоянно возникают
На самом деле нихуя, теоретически кажется, что это так, но на практике с таблицами всегда а какие-то ебаыне проблемы :ps5bug:

Отправлено спустя 1 минуту 18 секунд:
Например проверка, как работает grid view - хороший способ сразу отсеить интерфейсный фреймворк :musk:

12 дней успешности

: 11 ноя 2020, 17:31
Newfag
NightlyRevenger писал(а): 11 ноя 2020, 17:23 На самом деле нихуя, теоретически кажется, что это так, но на практике с таблицами всегда а какие-то ебаыне проблемы
Прост когда по такому туториалу что-нить сделаешь, то наступает эйфория и думаешь что рилли умеешь работать с таблицами, но чем больше с ними работаешь, тем больше понимаешь что вообще нихуя не знаешь :petrosyan:

: 11 ноя 2020, 17:35
NightlyRevenger
Newfag писал(а): 11 ноя 2020, 17:31 Прост когда по такому туториалу что-нить сделаешь,
Я не про этот туториал а вообще, при работе с таблицами всё время вылезает какая-то хуйня :ps5bug:
При чем с любыми таблицами, что с таблицами в интерфейсе, что с файлы таблиц и т.д. :poher:

12 дней успешности

: 11 ноя 2020, 18:46
ShakotanGX71
Newfag писал(а): 11 ноя 2020, 17:05 опять строчить портяну?
12к строчек - это портянка или нет? :uuu:

12 дней успешности

: 11 ноя 2020, 18:52
NightlyRevenger
ShakotanGX71 писал(а): 11 ноя 2020, 18:46
Newfag писал(а): 11 ноя 2020, 17:05 опять строчить портяну?
12к строчек - это портянка или нет? :uuu:
Если в одном файле, то это пиздец :arnoface:

12 дней успешности

: 11 ноя 2020, 19:06
ShakotanGX71
NightlyRevenger писал(а): 11 ноя 2020, 18:52 Если в одном файле, то это пиздец
В одном, после разделения :miniYoBa:

12 дней успешности

: 11 ноя 2020, 19:13
Newfag
ShakotanGX71, не быть тебе успешным :ps5bug:

12 дней успешности

: 11 ноя 2020, 19:19
ShakotanGX71
Newfag, унаследованный код не выбирают :pled:

12 дней успешности

: 11 ноя 2020, 19:20
Bender Rodriguez
столько успешных программистов, а минусы никто не запилил :huang:

12 дней успешности

: 11 ноя 2020, 19:25
Newfag
ShakotanGX71, год с небольшим назад устроился на новую работку, там одна аппа была на обжс, за 3 месяца переписали на свифт :newfago:
Поэтому ты и прозябаешь над гавнолегаси, потому что не можешь взять ситуацию в свои руки, убедить менежеров выделить время на рефакторинг и сделать все в срок :ps5bug:

12 дней успешности

: 11 ноя 2020, 19:33
NightlyRevenger
Bender Rodriguez писал(а): 11 ноя 2020, 19:20 столько успешных программистов, а минусы никто не запилил :huang:
Их целенаправленно удалили, что бы уменьшить токсичность

Отправлено спустя 1 минуту 17 секунд:
Newfag писал(а): 11 ноя 2020, 19:25 Поэтому ты и прозябаешь над гавнолегаси, потому что не можешь взять ситуацию в свои руки, убедить менежеров выделить время на рефакторинг и сделать все в срок :ps5bug:
Не всегда есть возможность убедить начальство дать время на рефакторинг, особенно для больших проектов :ohyou:

12 дней успешности

: 11 ноя 2020, 19:38
ShakotanGX71
Newfag писал(а): 11 ноя 2020, 19:25 выделить время на рефакторинг
На хуякторинг. Нет ресурсов.
Коллеги портировали кусочек функционала на одну из платформ месяца два. Тестируется оно уже полгода и все равно всплывает что-то.
Переписать все и на все платформы - :gabelol: