Как стать автором
Обновить
6
Карма
0
Рейтинг
Павел Лаухин @Pavel-Laukhin

Разработчик iOS

  • Подписчики 15
  • Подписки

Джунам в Swift: как делать нейминг правильно?

Вам не приходилось отслеживать в git какие-то правки, когда в каждом комите названия переменных меняются - считай рефакторинг?

Да, приходилось. Да вроде особых проблем не было с этим. Может, были по началу, но сейчас вроде норм. Может, у нас не такой масштаб, как у вас, поэтому нет особых проблем, не знаю.

А Фигма разве умеет гарантировать, что все ключи картинок (включая прошлые и будущие) будут например, уникальными?

Как дизайнер назовет, так оно и сохраняется из Фигмы :] Не особо народ запаривается на этот счет. То есть, иногда переименовывают, конечно, но всё равно, к сожалению, нет гарантии, что по названию картинки будет понятно, что это.

По поводу Localizable.strings - а зачем вам повторяющиеся строки в этом файле, если xcode все равно выберет одну из этих строк?

Ключи у нас уникальные, а вот значения могут быть разные. Например, сверстали два разных человека два разных экрана. Условно, один верстал онбординг, второй в это время верстал экран подписки. И там, и тут встречается одна и та же фраза на кнопке Продолжить ("Continue"). И вот один разраб в Localizable сделал строчку
"onboardingContinueButton" = "Continue";, а второй сделал такую же параллельно "subscriptionContinueButton" = "Continue";. Потом когда-нибудь эти ветки слились в develop, и вот вам два одинаковых текста на разных экранах. А если таких экранов много, то вероятность повторяющегося текста еще больше растет. В общем, я к тому, что по ключам можно искать, как вы предложили, но зачем? Если уж на то пошло, можно вообще не просить никого делать нормальный нейминг, а каждый раз заниматься вот такими вот детективными расследованиями. Но зачем? Цель статьи как раз и заключается в том, чтобы побудить давать более-менее однозначные названия, а не какие-то ноунейм или абстрактные, из-за которых приходится потом тратить лишнее время на поиски. :]

Джунам в Swift: как делать нейминг правильно?

Спасибо за комментарий!

Если по смыслу лучше подходит «are», я именую с «are». :] А как иначе? Язык Свифт как раз-таки и создавался похожим на просто английский язык, поэтому логично соблюдать правила языка.

UI на констрейнтах чисто кодом — постоянно. А что в этом такого? На мой взгляд, это хороший способ, ведь в коде всё прозрачно и понятно, никакой магии, всё на виду.

Предлагаю ли я переименовывать переменные всякий раз, когда меняется UI? Конечно! А какой смысл, например, оставлять в названии какой-нибудь color, когда теперь эта кнопка отвечает за size? :] Как дядюшка Боб завещал: «Видишь плохо именованную штуку — не проходи мимо, переименуй в более подходящее название». Если политика компании позволяет, конечно. У нас позволяет. :]

Касаемо вашего способа по поиску текстов и картинок там, где они присваиваются. Да, это тоже вариант, спасибо. Иногда и такой способ может выручить. А если картинки и тексты присваиваются не в месте их объявления? А если картинки присваиваются как imageView.image = UIImage(named: «тут какое-то абстрактное название с цифрой, потому что так из Фигмы сохранилось»)? Это мне каждый раз лезть в ассеты и искать там эту картинку? На мой взгляд, всё же быстрее правильно проименовать и/или написать пару строк документации, не заставляя читателя рыться в картинках и искать по всему документу (а то и вовсе снаружи документа), где там присваиваются значения у свойств. Тем более, что локализованые тексты обычно задаются в виде ключа, а содержимое ключа прописано в файле Localizable.string (а там 100500+ ключей, и содержимое порой повторяется… да ну, нет, не стоит так издеваться над проверяющим).

Танцы с ассетами

Убрать фазу компиляции ассетов из сборки проекта. Компилировать ассеты самостоятельно только в случае их изменения. Положить скомпилированные ассеты в бандл приложения при сборке.

А можно как-то подробнее про эти три пункта? )

Делегаты и колбэки в Swift простым языком. Что же такое этот delegate, и как работает callback

Спасибо за уделенное время.
Говорят, что в программировании самое трудное — это выбор правильных имён. Что бы вы посоветовали в плане улучшения имён в данной статье?
И о каких ошибках идёт речь?

Многопоточность (concurrency) в Swift 3. GCD и Dispatch Queues

Супер, огонь!
Статья большая, поэтому неудивительно, что встречаются опечатки. В основном некритичные, так что ничего страшного, всё-таки такая большая работа была проделана! Но, наверное, стоит исправить хотя бы одну, критичную, чтобы не вводить новичков в заблуждение. :]

А именно, в конце в разделе «10. Функция asyncAfter (deadline: .now() + 0.1, qos: .userInteractive) c изменением приоритета» нужно в выводе написать НЕ СОВПАДАЮТ. Очевидно, пропущена частица НЕ, что меняет смысл вывода на противоположный.

Ну, и вот здесь, на мой взгляд, стоит перефразировать одно предложение:
«Барьеры GCD делают одну интересную вещь — они ожидают момента, когда очередь будет полностью пуста, перед тем как выполнить свое замыкание.»

Всё же лучше написать как-то вот так, как считаете?

«Барьеры GCD делают одну интересную вещь: они заставляют очередь временно не начинать новые задачи и ждут, пока все работающие в очереди задачи закончат свою работу, а затем выполняют свое замыкание.»

А то, когда я только начинал знакомство с многопоточностью (месяца 4 назад) и впервые прочитал эту статью, мне эти фразы вынесли мозг :]]]

Спасибо за Ваш труд!

Делегаты и колбэки в Swift простым языком. Что же такое этот delegate, и как работает callback

Да, так тоже можно. Главное, чтобы была понятна суть, как и для чего используется делегат.

Делегаты и колбэки в Swift простым языком. Что же такое этот delegate, и как работает callback

Добрый день.
Использовать extention'ы удобно для тех, кто имеет опыт их использования. Это был пример скорее для них, нежели для всех.

Вам же рекомендую пропустить и не вставлять extension Waiter и extension Cook, как вы делали по порядку. Просто подправьте код, написанный ранее, добавив туда соответствующие строчки. Как раз далее я написал о том, что для для простоты мы удалим extention'ы (экстеншены) и перенесем строчки в код. И чуть ниже идут переделанные классы Waiter и Cook уже со всеми исправлениями и доработками. Надеюсь, что это помогло :)

Делегаты и колбэки в Swift простым языком. Что же такое этот delegate, и как работает callback

Безусловно вы правы во всем, спасибо. Но обо всех тонкостях в одной статье не написать, да и не это было целью. Для меня главное, чтобы читатели, такие как я, у которых до конца не складывался пазл про делегаты и колбэки, наконец-то поняли «на пальцах», как это работает и когда это применяется ))
Возвращение Bool было не обязательным, конечно. Это так, для примера. Может, стоит предупредить о этом… Надо подумать. Просто не хотел бы превращать статью еще и в разбор правил построения замыканий. Она и так очень уж большая получилась, на мой взгляд ))

Делегаты и колбэки в Swift простым языком. Что же такое этот delegate, и как работает callback

Благодарю за комментарий.
Я намеренно сделал несколько допущений, чтобы не усложнять. Конечно же, я надеюсь никто из изучающих Swift не будет делать force unwrapping в своих приложениях. Я полагаю, что те, кто дошел до изучения UIKit, уже знает и про опционалы, и опасность force unwrapping, и про то, что нужно делать код безопасным через optional binding (if let или guard let). Сомневаюсь, что кто-то начинает изучение Swift сразу с делегатов, не изучив опционалы и опциональные цепочки )) Поэтому эта статья будет полезна тем, кто уже столкнулся с делегатами и колбэками и теперь лишь пытается разобраться до конца и уложить кусочки пазла в целостную картину ))

Информация

В рейтинге
Не участвует
Откуда
Октябрьский (Московская обл.), Москва и Московская обл., Россия
Дата рождения
Зарегистрирован
Активность