iOS Makes Me Hate
3.94K subscribers
1.16K photos
167 videos
15 files
1.34K links
Авторский канал про iOS разработку. Путь продуктовых самураев в MAANG.

Самое больше iOS сообщество практиков: https://boosty.to/lionbond/

Автор: @lvbond Senior iOS Yandex, ex-Avito, VK
Download Telegram
📘 "Идеальная работа" Р. Мартин

Каждый начинающий программист слышал о книгах Мартина. Трудно преуменьшить значимость его работ.

Только вот одна деталь. Не стоит торопиться бежать читать. В этом деле важна наваренность. Это блюдо требует медленного томления. У них нет терпения на незрелых. В их требованиях опыт и насмотренность.

Нарочито, названия этих книг начинаются с идеала. Идеальный тот, идеальный этот. Как планка, которую перепрыгивает лишь рекордсмен. Он выставляет завышенные с требования к атлетам. Они для тех, кто застрял в дешевых и быстрых решениях. Устал от рутины и траты времени на неэффективные, утомляющие процессы. Кто хочет бросить вызов себе.

Книги, как маяк. Плыть к нему дорого и далеко не всегда нужно обычному рынку.

О чем книга? О работе. Для тех, кто не нашел себя. Не определил для себя формулу идеальной компании:
- Как испытывать гордость за работу
- Как не умирать в легаси
- Навыки поддержки кода
- Софты для всех случаев жизни
- Планы в развитии

Тут есть над чем поспорить. И чему вдохновиться.

#books
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
пока мы тут читаем книги. Какой-то чел выигрывает телеграм конкурсы по всем дисциплинам и языкам

https://contest.com/user/Hip-Hyena
👍12😁5🔥1😢1
Безмерно уважаю людей, любящих свою индустрию и вносящих в нее вклад.

Канал Вити знают сейчас все. Он набирает стремительный рост. Для меня он лучший в телеграме. Его подача оригинальная, полезная и интересная. Чувствуется авторство и душа, а не копирка и пересказ.

А еще он выигрывал телеграм конкурсы. В этот раз он тоже участвовал и сделал работу, которая заслуживает лучших оценок. Но все же получил крутой опыт и навыки в контесте.

Подробнее в этой статье
👍12❤‍🔥3💯211🔥1
👩‍💻 self and Type

Как сказал автор статьи: "Метатипы — это еще один пункт, который я использую каждый день, но не смогу объяснить на интервью".

Чтобы понять метатипы нужно перестать видеть типы, а смотреть на все, как инстанцы и экземпляры.

String тип “Hello World”
String.Type тип String.self

Когда String — это тип экземпляра, то String.Type это тип типа. Это и называется “метатипом”

- Знакомство с метатипами
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
❤‍🔥6👍42
Для кого-то Авито кажется маленькой компанией. Часто, когда я рассказываю, какие практики мы используем, какие крутые у нас процессы, какой стэк мы юзаем, многие удивляются.

Авито — это не маленькая компания. Это самый большой и популярный классифайд в мире. А значит и специалисты тут самые крутые.

Раз тема сейчас про практики написания кода, архитектуры и организацию, то поделюсь супер-крутым плейлистом

https://www.youtube.com/watch?v=YybfRrtjdXE&list=PLknJ4Vr6efQHD8qkPPosGQjqrZpTa7KQP
6🔥6❤‍🔥2🐳1🏆1
Что такое архитектура?

Легче всего объяснить для чего нужна архитектура — это понять какие проблемы она решает.

При росте проекта появляется много связей между модулей. Связь становится настолько крепкой, что безполезненное удаление или изменение одного из них становится проблемой. Изменяя один модуль — мы затрагиваем другой.

Хаотичные связи между модулями с ростом проекта усложняют поддержку, рефакторинг и добавление новых фичей в проект.

💪 Хорошая архитектура должна обладать:
- Сильной связанность (направленные на решение одной четкой задачи)
- Слабой зацепленностью (как можно менее зависимые от других модулей)

Связь представляет собой степень, в которой часть базы кода образует логически единую атомарную единицу.

Сцепление, с другой стороны, представляет собой степень, в которой одна единица независима от других. Другими словами, это количество соединений между двумя или более единицами. Чем меньше цифра, тем ниже сцепление.

Архитектура ПО — это описание модулей, компонентов и кирпичиков системы, описание того, как эти модули должны разрабатываться. И описание связей между этими модулями.

💻 Не нужно путать набор папочек и файликов в вашем проекте с архитектурой. Файловая система лишь часть архитектуры.

- Разница между сплоченностью и сцеплением
- Низкая связь и высокая сплоченность
- Архитектура ПО
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
7🔥3❤‍🔥1💯1
Мощненький плейлист фронтовых примеров систем дизайна. От ленты фейсбука до чатов и календарей

upd: слово "фронтовые" звучит теперь пугающе

https://www.youtube.com/watch?v=5vyKhm2NTfw&list=PLI9W87-Dqn7j_x6QtR6sUjycJR7nQLBqT
💯8❤‍🔥2
💎 Architecture vs Design

Не секрет, что многие часто путают архитектуры и дизайн системы, хотя это две части одного процесса. Эта путаница часто может выстрелить в ногу и поставить под угрозу весь процесс разработки.

🗺 Архитектура (Architecture) — фокусируется на каркасе и высокоуровневой инфраструктуре.

🏠 Дизайн (Design) — концетрируется на дизайне кода. Например, как функции модулей, размеры классов, назначении функций и тп.

Дизайн необходим для сбора требований и перевод их в реализацию.

Артефакты, которые ожидаются от дизайна систем:

🟢Спеки требований — документ, в котором описывается ожидаемое поведение системы при взаимодействии с пользователем. Они должны соответствовать бизнес-требованиям.

🟢High-level design — чаще это какой-то чертеж в миро, который показывает, как взаимодействует модуль с другими модулями. Или всей системой.

🟢Детальная схема — подробно описанные модули, включая нэйминг классов и подсвечивает проблемные места.

Архитектура показывает структуру системы и скрывает детали реализации. Она сфокусирована на взаимодействии системы друг с другом.

Дизайн системы уже работает с деталями реализации, алгоритмами и структурами данных.

Хоть и дизайн, и архитектура являются двумя частями одного целого, но не весь дизайн относится к архитектуре. Роль архитектора не в знании деталей, а в знании общей картины.

- Разница между архитектурой и дизайном
- Разница между архитектурой и дизайном 2
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9
Архитектура для бизнеса

В книге "System Architecture" есть такое понятие как Point of View (PoV). Какие же они бывают?

Архитектура — это визуализация нашей системы на модули, которые должны быть понятны всем. И также стэйкхолдерам. Бизнес должен понимать как мы работаем и какие взаимодействия происходят. Почему?

Допустим, у нас есть лицензии технологий, которые мы используем. Юристам нужно выровнять лицензии, с которыми мы работаем

Еще одна Point of View — это план проекта. А это значит деньги, сроки и риски. Хорошая визуализация нашей архитектуры помогает сделать хорошую аналитическую работу всем, а не только инженерам.

Хорошая архитектура и ее понятная визуализация напрямую влияет на оценку и стоимость.
🔥3👍1
💎 Клиентская архитектура

"если все, что у вас есть, это молоток, все выглядит как гвоздь"

Проблема клиентских приложей в большом росте связей и зависимостей между логикой на разных уровнях: бизнес-кейсами, отрисовкой и управлением данными.

Как организовать инфраструктуру приложения?
Ответов на этот вопрос множество. Пройдемся по нескольким вкратце и возьмем не только мобильные приложения. И почти не затронем iOS.

CLEAN — одна из основных концепций разделения логики тестируемым и гибким способом.

FSD (Feature Sliced Design) — Основная цель этой методологии - сделать проект более понятным и структурированным в условиях постоянно меняющихся бизнес-требований за счет нарезки на отрезки и четкой структуры

BLoC (Business Logic Component) — разрабы флаттера придумали свою архитектуру для разделения бизнес логики от интерфейса

Как можно заметить цели архитектуры — это не организация папок, а декомпозиция сущностей. Которые легко удалять, масштабировать и тестировать.

- Основы клиентской архитектуры
- Vertical Slice Architecture
- DDD на практике
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3🔥21👌1🏆1
Layered Architecture to Design iOS Apps

Еще интересных статей про разделение архитектур на слои. Наверное, она вам что-то должна напомнить...

Ничего нового, скорее хорошая структура и визуализация
4👍2
☁️ прикольный тред чела, который готовился на собесы систем дизайна в западные компании

Опять же: проектирование — это знание системы на всех уровнях. Начиная от знания сети и бэка, заканчивая платформы и бизнес логики

https://twitter.com/e_matsyuk/status/1519539090097643521?s=20&t=DDEe04Mi8X3wONvKVd4hCw
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7🔥1
🥱 MVC == MVP

🍏 MVC

Большое заблуждение в индустрии, что View и Controller связаны в одну сущность — ViewController. Но это не так. В своей документации эйпл говорила о комбинирующих ролях. Такое объединение допустимо лишь для некоторых апок, но не для всех.

Но если Controller != ViewController, и роль Presentor выполняет Controller, то чем тогда MVC отличается от MVP?

Фаулер описал это еще в далеком 2006 году для GUI архитектур. Еще тогда он описал о проблеме толковании MVC паттерна:

☁️ Разные люди, читающие о MVC в разных местах, берут из него разные идеи и описывают их как «MVC». Если это не вызывает достаточной путаницы, вы получаете эффект непонимания MVC, который развивается через систему китайского шепота.

Вся суть и история МVC — это в Separeted Presentation, где выделяется логика предметной области и вьюхами.

🍏 MVP
Шаблон проектирования MVP необходим уже тогда, когда ваше приложение имеет множество View.

Если просто, то основное отличие, это в том, что презентор должен ссылаться на вью. Когда в каноничном MVC — Controller не знает о вью.

💎 Но только не в иос. У нас MVC от эйпла одно и то же, что и MVP. Но многие придумали себе несуществующих проблем и сделали VIPER

- Дока эйпла по MVC
- Разница между MVC vs MVP
- Мартин Фаулер и GUI архитектуры
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6😁6😐4🔥2
Архитектура Твиттера
👍2🔥2💯2