Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Хто так будує? Антипаттерни iOS розробки

Sponsored · SiteGround - Reliable hosting with speed, security, and support you can count on. →

Хто так будує? Антипаттерни iOS розробки

Доповідь описує декілька прийомів проектування і програмування, які часто недоцільно використовують iOS інженери у своїй роботі, їхні особливості, а також плюси і мінуси використання.

Представлена на Lviv Mobile Developers Day 2015

ВІдео: https://www.youtube.com/watch?v=Hfy9m1FbE-E

Avatar for Serhii Mumriak

Serhii Mumriak

October 31, 2015

Other Decks in Programming

Transcript

  1. Об’єкт-бог в композиції іншого об’єкта-бога - pow("Складність масштабування", 2) -

    Відсутність кастомізації - Високий поріг входження для підтримки - Час для рефакторинга близький до нескінченності
  2. Дата лоадер як сабкласс реквест менеджера - знецінювання оригінального призначення

    об"єкта - збитковість коду - неможливість очевидного розділення задач по типам (REST запити, завантаження документів, відсилання данних, завантаження великої кількості данних і т.д.)
  3. Нотіфікейшн від nil - хак - зменшення відповідальності - зниження

    контролю над системою з боку розробника - неочевидність
  4. Робота з raw-даними від бекенда + написав і забув +

    працює з базовими контейнерами (зазвичай)
  5. Робота з raw-даними від бекенда - складність оновлення - неочевидність

    - довгий і болісний перехід на нормальну модель - читабельність коду відсутня (майже)
  6. Парсер як частина модельного классу - майже відсутня абстрактність -

    складність серіалізації ієрархії об"єктів - неможливість десеріалізувати ієрархію об"єктів
  7. Декільна Root в’юконтроллерів - необхідний хак для їхнього переключення -

    заміна рутового об"єкта в рантаймі недопустима - ніякої докумендації про поведінку аппи при зміні рут в’юкотроллера - забудьте про анімації
  8. Використання boolean замість сабклассінга (або будь-якого іншого рішення) - головне

    джерело спагетті-кода - pow("Складність", numberOfBooleans) - довгий і не приємний рефакторинг
  9. Як уникнути? • Divide and conquer • знати паттерни програмування

    • знати свій фреймворк • писати код в стилі фреймворка • критично мислити • переймати знання і досвід через код (github, cocoapods, різні конференції і т.д.) • НІКОЛИ не вважати stackoverflow джерелом знань
  10. QA

  11. Design Patterns Explained Simply https://sourcemaking.com/design-patterns-book Professional Software Development by Vasyl

    Pasternak 
 https://speakerdeck.com/vasylp/professional-software- development AFNetworking https://github.com/AFNetworking/AFNetworking Alamofire https://github.com/Alamofire/Alamofire Realm.io https://realm.io/docs/objc/latest/