Ответ
Да, непрерывное обучение — неотъемлемая часть моей работы. Акцент делаю на углублении знаний в экосистеме Apple и современных практиках разработки.
Основные направления:
- SwiftUI & Combine: Изучаю продвинутые паттерны состояния, кастомные layout и реактивные цепочки данных.
- Архитектуры: Анализирую такие подходы, как The Composable Architecture (TCA) и MVVM, чтобы выбирать оптимальные для масштабируемости и тестируемости.
- Concurrency: Осваиваю современный async/await,
TaskиActor, сравнивая их с GCD и Operation.
Источники знаний:
- Официальная документация и сессии WWDC.
- Технические блоги (Swift by Sundell, Point-Free).
- Исследование open-source проектов на GitHub.
- Практика через пет-проекты и рефакторинг рабочего кода.
Пример применения: При изучении async/await переписал сетевой запрос:
// Старый подход с completion handler
func loadItems(completion: @escaping (Result<[Item], Error>) -> Void)
// Новый подход с async/await
func loadItems() async throws -> [Item] {
let url = URL(string: "https://api.example.com/items")!
let (data, _) = try await URLSession.shared.data(from: url)
return try JSONDecoder().decode([Item].self, from: data)
}
Цель — не только знать синтаксис, но и понимать компромиссы (например, отмена задач и обработка ошибок в structured concurrency).
Ответ 18+ 🔞
Ну ты смотри, какая история! Сижу я тут, значит, и думаю: ну как же так, блядь, в этой нашей айтишной жизни не отстать от поезда, который, сука, летит со скоростью света? А поезд этот — новые технологии, фреймворки, эти ваши архитектуры, которые плодятся как кролики. И понимаю — учиться надо, блядь, непрерывно. Иначе накроешься медным тазом, и будешь ты, как тот Герасим, только мычать «Муму» на старом Objective-C, а все вокруг уже на SwiftUI с async/await чирикают.
Вот и я, сука, так же. Основной мой фокус — это вся эта яблочная экосистема, потому что, ну, ёпта, там такой сад развели, что без поллитры не разберёшься. Но разбираться надо, иначе пиши пропало.
Куда мозги, блядь, вкладываю:
- SwiftUI & Combine: Это ж, блядь, основа основ теперь. Но не просто кнопочки-ползуночки рисовать, а вникать в эти ихние продвинутые паттерны. Как состояние управлять, чтобы не получилось пиздопроебибны, где всё связано со всем. Кастомные лейауты делать, чтобы не как у всех. И Combine, эта реактивная хуйня, чтобы данные текли как надо, а не как попало.
- Архитектуры: Вот тут, блядь, раздолье для ума. Смотрю я на TCA (The Composable Architecture) — и волнение ебать, такой монстр, но красивый, блядь. Потом на MVVM — старый добрый, но с подвохами. Цель-то простая: выбрать такую штуку, чтобы приложение не развалилось, когда оно из пет-проекта превратится в нечто с овердохуищем фич, и чтобы его можно было протестировать, не поседев при этом.
- Concurrency (Многопоточность): А вот это, сука, отдельная песня. Раньше был GCD — уже мозг выносил. Теперь вот async/await,
Task,Actor... Красота, вроде бы. Код как в сказке читается. Но подвох, блядь, везде есть. Как задачи отменять? Как ошибки ловить в этих «структурированных» потоках? Вот и ковыряю, сравниваю со старьём, чтобы понять, где реально лучше, а где просто синтаксический сахарок.
Где, сука, знания добываю:
- Первое дело — иду к первоисточнику. Документация Apple и записи с WWDC. Там, бывает, такие ништяки рассказывают, что потом месяц осмысливаешь.
- Блоги всякие умные, типа Swift by Sundell или Point-Free. Там ребята так глубоко залезают, что иногда кажется, они про мой код пишут, про мои косяки.
- На GitHub лазаю. Смотрю, как другие, не дураки, проекты строят. Подсматриваю решения, ага, вот эта хитрая жопа такую проблему обошла!
- Ну и, конечно, практика, мать её. Либо пет-проект какой-нибудь левый замутить, либо в рабочем коде найти кусок, который глаза режет, и его переписать. Без этого никуда.
Вот, например, наглядная хуйня: Изучал я этот самый async/await. Раньше сетевой запрос выглядел как многоэтажный пиздец с completion handler'ами:
// Старый подход, который вгонял в депрессию
func loadItems(completion: @escaping (Result<[Item], Error>) -> Void) {
// Тут куча кода, где можно было всё просрать
}
А теперь, блядь, красота:
// Новый подход. Чисто, понятно, почти как проза.
func loadItems() async throws -> [Item] {
let url = URL(string: "https://api.example.com/items")!
let (data, _) = try await URLSession.shared.data(from: url)
return try JSONDecoder().decode([Item].self, from: data)
}
Но и тут, сука, расслабляться нельзя. Цель же не просто синтаксис новый выучить, как попугай. А понять, о чём он, блядь, думал, этот самый синтаксис. Где эти новые подходы выстрелят, а где могут так впендюрить, что мало не покажется. Вот в этом и есть, блядь, вся соль. Чтобы не просто модно писать, а писать так, чтобы потом самому же не было стыдно и больно.