Комментарии 14
c++ в swift c какой версии доступен? Он очень свеж. Да даже async await свифтовые капец какие свежие (я думал они будут по умолчанию в языке как только он появился... уж сильно устоявшийся паттерн). Пока без Objective-C, который работает вообще везде обойтись трудно, если нужны с++. Думаю лет 5 еще такое заявление будет работать.
Интероп в Swift 5.9 появился, в рекомендашках как раз закинул докладик с Мобиуса, в котором Андрей Филипенко поковырял фичу
Асинк авейт вообще интересным был, его когда Apple выкатила, пришлось смотреть, как работает в других языках, типа котлина или C#, а то была проблема с тестированием некоторых историй
Вроде интероп с крестиками всё ещё проблемный. На работе время от времени на него смотрим (есть желание заменять ObjC на Swift, где получается без большой боли: код на Swift получается прозрачнее, так что это хороший задел на будущее), нам актуально.
Swift 5.9 всего год назад вышел... IOS17, 16? если требование с 13 то... пока никак)
Сейчас по работе каждый день пишу на obj-c, хотя до этого несколько лет писал на swift. Гибкий и быстрый язык, а к синтаксису быстро привыкаешь.
Вода водой
Почему вы видите только положительные стороны строгой типизации? Для начала такой строгой типизации нет наверное ни в одном языке - вы даже 2 и 2.5 не сможете сложить из-за того, что они разных типов.
Со строками там вообще лютая дичь - результат поиска подстроки в строке - это не строка, а произвольный несовместимый тип. Поиск позиции подстроки тоже завязан не на int, а на некий произвольный тип
С каких пор Легаси это какой-то плохо структурированный или недокументированный код, полный техдолга?
Легаси - буквально, наследие. Не видел еще разработчика который обожает копаться в коде, что написали до него, который ему надо поддерживать, и не чертыхается на каждом слове. Ты хоть каждую строку задокументируй, следующий разраб будет недоволен. Просто разница в подходах, мироощущении, опыте. С научной точки зрения, это нюансы нейропластичности, где попытка осознать чужой ход мышления заставляет мозг изменять старые нейронные связи и создавать новые отчего возникает дискомфорт и трение.
Никакой связи у понятия «Легаси» с качественными характеристиками кода нет.
Потому что либо приходит зеленый на твой код, либо ты его писал зеленым)) и так и так получишь)) Нейропластичность, думаю, это больше речь про вникание в новую архитектуру
На счет легаси и качеством не соглашусь. Качество зачастую обеспечивает новый опыт, это или мозги IDE или новые языковые конструкции, с которыми удобнее не стрелять в ногу или же они дают меньше когнитивной нагрузки.
Кажется по вашей логике, любой код, который написан, является легаси, но это не так. Недавно делал общий компонент на проекте, старался покрывать докой максимально подробной, так как понимаю, что в будущем будут поддерживать другие люди. Как раз дока/тесты и пр помогают снизить трение)
Именно так. Любой код, который уже написан одним программистом, для другого будет легаси. Увы, код - это побочный эффект выполнения задачи и в наши дни имеет свойство устаревать через неделю после коммита. И как побочный эффект он создает ряд других проблем уже не связанных с исходной целью: сопровождение, латание дыр, обновление зависимостей и тд и тп. Например, вы написали лучший код в жизни, но через время пакет, от которого он зависит перестал поддерживаться, или код который от него зависит ушел вперед и ваш пакет надо обновить. Тот кто это сделает назовет его легаси. Поэтому это так.
Здорово, что вы пишите доку и тесты. Это делает ваше легаси поддерживаемым )
Полезно, спасибо за материал!
Objective-C не кусается: как перестать бояться Legacy и стать настоящим iOS-ниндзя