okidokimiki / kode-practice-ios

Collection of random users 👾

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Тестовое

Тестовое задание взято у appKODE с публичного репозитория gitHub.

Для удобства чтения все Pull Request(ы) и Commit(ы) будут на русском языке.


Содержание

  1. Функционал
  2. Описание фичей
  3. Не сделано
  4. FAQ

Функционал

Для ознакомления с устройством фичи можно заглянуть в истории Pull Request(ов).

Launch Search
Filter Localization
Internet Error Internal Error
Call Pull to Refresh

Описание фичей

  1. Launch:
    • Кастомный экран запуска
    • UI-cкелет во время загрузки данных с сервера
    • Сохранение и установление последней вкладки
  2. Search
    • Поиск по Имени
    • Поиск по Тегу
    • Ошибка поиска (не найдено)
  3. Filter
    • Фильтрация по алфавиту
    • Фильтрация по дню рождения (возрастание)
  4. Localization
    • Локализация Русского языка
    • Локализация Английского языка
  5. Error
    • Обработка ошибки с подключением к интернету
    • Обработка внутренних ошибок с сервера
  6. Details
    • Вызов при нажатии на номер
    • Закрытие экрана по pop-свайпу
  7. Pull to refresh
    • Если потянуть таблицу — обновятся пользователи
  8. Figma like design
    • Склонение год/года/лет
    • Номер телефона по маске
    • Первые 3 буквы месяца
    • Язычок в заголовке модального экрана
    • Поле ввода по макету: фильтр-кнопка и лупа-кнопка меняют цвет в соответствии состояния поля

Не сделано

  • Темная тема
  • Юнит-тестирование
  • UISheetPresentationController при >iOS14
  • Кастомный анимированный индикатор обновления (анимация)
  • Свайп для перехода между вкладками (как в Telegram)
  • Реактивщина: RxSwift || Combine

FAQ

Библиотеки использовать можно свободно на своё усмотрение, но будет круче, если сделать всё самостоятельно.

Q: Можешь ли аргументировать почему использовал SnapKit?
Q: Почему выбрал в качестве архитектуры — MVVM?
A: Во-первых, на сколько мне известно, KODE используют эти технологии, соответственно мне захотелось сделать все приближено к вашим условиям. Во-вторых, до этого не использовал ни то, ни другое, а верстать через NSLayoutConstraint и Anchors вроде умею (пример). Потому решил сделать небольшой челлендж.

Q: С каким трудностями столкнулся?
A: Идти сразу в реактивщину, не зная ни MVVM, ни одного фреймворка – плохая идея ). Какое-то время не мог понять причину ошибки загрузки картинок с сервера (HTTPHeader: dynamic=true). Ну, еще можно выделить передачу данных с модального окна назад на топ, и работу с датой. Так что, наверное, все как у людей :).

Q: Не вижу раздела с затраченным временем, почему?
A: Тк, я не сразу стал выполнять задание, а какое-то время потратил на изучение вышесказанного, то не смог зафиксировать затраченное время. Однако, ушло примерно ±1.5 недели на все с условием, что тратил примерно 2-4 часа в день (в выходные отдыхал — лето 🙃 ).

About

Collection of random users 👾


Languages

Language:Swift 99.7%Language:Ruby 0.3%