Что такое архитектура?
Легче всего объяснить для чего нужна архитектура — это понять какие проблемы она решает.
При росте проекта появляется много связей между модулей. Связь становится настолько крепкой, что безполезненное удаление или изменение одного из них становится проблемой. Изменяя один модуль — мы затрагиваем другой.
❕ Хаотичные связи между модулями с ростом проекта усложняют поддержку, рефакторинг и добавление новых фичей в проект.
💪 Хорошая архитектура должна обладать:
- Сильной связанность (направленные на решение одной четкой задачи)
- Слабой зацепленностью (как можно менее зависимые от других модулей)
Связь представляет собой степень, в которой часть базы кода образует логически единую атомарную единицу.
Сцепление, с другой стороны, представляет собой степень, в которой одна единица независима от других. Другими словами, это количество соединений между двумя или более единицами. Чем меньше цифра, тем ниже сцепление.
Архитектура ПО — это описание модулей, компонентов и кирпичиков системы, описание того, как эти модули должны разрабатываться. И описание связей между этими модулями.
💻 Не нужно путать набор папочек и файликов в вашем проекте с архитектурой. Файловая система лишь часть архитектуры.
- Разница между сплоченностью и сцеплением
- Низкая связь и высокая сплоченность
- Архитектура ПО
Легче всего объяснить для чего нужна архитектура — это понять какие проблемы она решает.
При росте проекта появляется много связей между модулей. Связь становится настолько крепкой, что безполезненное удаление или изменение одного из них становится проблемой. Изменяя один модуль — мы затрагиваем другой.
- Сильной связанность (направленные на решение одной четкой задачи)
- Слабой зацепленностью (как можно менее зависимые от других модулей)
Связь представляет собой степень, в которой часть базы кода образует логически единую атомарную единицу.
Сцепление, с другой стороны, представляет собой степень, в которой одна единица независима от других. Другими словами, это количество соединений между двумя или более единицами. Чем меньше цифра, тем ниже сцепление.
Архитектура ПО — это описание модулей, компонентов и кирпичиков системы, описание того, как эти модули должны разрабатываться. И описание связей между этими модулями.
- Разница между сплоченностью и сцеплением
- Низкая связь и высокая сплоченность
- Архитектура ПО
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
upd: слово "фронтовые" звучит теперь пугающе
https://www.youtube.com/watch?v=5vyKhm2NTfw&list=PLI9W87-Dqn7j_x6QtR6sUjycJR7nQLBqT
YouTube
[Front End System Design] - Facebook News Feed
Episode 1 - Facebook News Feed
Facebook News Feed is a widespread problem for System Design for Front-End interviews. Let's try to design it. This is just my thoughts and it's not a guide on how to do that.
If you have any suggestions, please leave comments…
Facebook News Feed is a widespread problem for System Design for Front-End interviews. Let's try to design it. This is just my thoughts and it's not a guide on how to do that.
If you have any suggestions, please leave comments…
💯8❤🔥2
Не секрет, что многие часто путают архитектуры и дизайн системы, хотя это две части одного процесса. Эта путаница часто может выстрелить в ногу и поставить под угрозу весь процесс разработки.
Дизайн необходим для сбора требований и перевод их в реализацию.
Артефакты, которые ожидаются от дизайна систем:
Дизайн системы уже работает с деталями реализации, алгоритмами и структурами данных.
Хоть и дизайн, и архитектура являются двумя частями одного целого, но не весь дизайн относится к архитектуре. Роль архитектора не в знании деталей, а в знании общей картины.
- Разница между архитектурой и дизайном
- Разница между архитектурой и дизайном 2
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9
Архитектура для бизнеса
В книге "System Architecture" есть такое понятие как Point of View (PoV). Какие же они бывают?
Архитектура — это визуализация нашей системы на модули, которые должны быть понятны всем. И также стэйкхолдерам. Бизнес должен понимать как мы работаем и какие взаимодействия происходят. Почему?
Допустим, у нас есть лицензии технологий, которые мы используем. Юристам нужно выровнять лицензии, с которыми мы работаем
Еще одна Point of View — это план проекта. А это значит деньги, сроки и риски. Хорошая визуализация нашей архитектуры помогает сделать хорошую аналитическую работу всем, а не только инженерам.
Хорошая архитектура и ее понятная визуализация напрямую влияет на оценку и стоимость.
В книге "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🔥2⚡1👌1🏆1
Лучший ютуб канал про иос разработку на днях сделал хороший пример про тестируемость и гибкость хорошей архитектуры. 5 минут полезней двух сезонов подлодки
Еще крутейшие видосы с канала:
- использование инкапсуляции в проекте
- решение реальных проблем с помощью Single Responsobility
- Почему модуляризация — это решение бизнес-логики
- майндсеты для архитекторов под ios
Please open Telegram to view this post
VIEW IN TELEGRAM
YouTube
iOS Dev: This is how good application architecture can enable flexibility and testability.
Full session: https://www.essentialdeveloper.com/articles/how-do-senior-ios-devs-decouple-features-from-frameworks-like-storekit-live-dev-mentoring
Join the iOS Lead Essentials program https://iosleadessentials.com
Like and share this content with someone…
Join the iOS Lead Essentials program https://iosleadessentials.com
Like and share this content with someone…
🔥8💯2😐2👍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
Большое заблуждение в индустрии, что View и Controller связаны в одну сущность — ViewController. Но это не так. В своей документации эйпл говорила о комбинирующих ролях. Такое объединение допустимо лишь для некоторых апок, но не для всех.
Но если Controller != ViewController, и роль Presentor выполняет Controller, то чем тогда MVC отличается от MVP?
Фаулер описал это еще в далеком 2006 году для GUI архитектур. Еще тогда он описал о проблеме толковании MVC паттерна:
Вся суть и история МVC — это в Separeted Presentation, где выделяется логика предметной области и вьюхами.
Шаблон проектирования 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
Подборка лучших дизайн паттернов для iOS 🤡
Лидирует MVC, observer, command и билдер:
- норм репо с примерами
- Топ паттернов за 2022
- легкое объяснение самых частых паттернов
- доп. Материал с паттернами
Лидирует MVC, observer, command и билдер:
- норм репо с примерами
- Топ паттернов за 2022
- легкое объяснение самых частых паттернов
- доп. Материал с паттернами
Please open Telegram to view this post
VIEW IN TELEGRAM
GitHub
GitHub - ochococo/Design-Patterns-In-Swift: 📖 Design Patterns implemented in Swift 5.0
📖 Design Patterns implemented in Swift 5.0. Contribute to ochococo/Design-Patterns-In-Swift development by creating an account on GitHub.
❤10👍5💯1
public internal(set) var count = 0
Anonymous Quiz
27%
Будет ошибка
4%
Чтение и запись только публичные
60%
Публичное чтение, запись только внутри модуля
8%
Чтение и запись только внутри модуля
😁11
вот заметил еще один неоспоримый (за спор бан) плюс юнит тестов — это скорость выполнения бизнес-кейса.
сейчас мне нужно было протестить поведение в одном из сложных флоу:
1. Запустить сборку
2. авторизоваться под несколькими учетками
3. воспроизвести поведение протухших токенов, отправки диплинков и тп
4. дождаться результата
Нетрудно посчитать, что симулятором и руками у меня бы это заняло пару минут. Умножай на 10-15 кейсов = в лучшем случае пару десятков минут, а в худшнем пару часов.
С написанными заранее моками и другими сущностями на каждый кейс ушло по 5-10 сек
сейчас мне нужно было протестить поведение в одном из сложных флоу:
1. Запустить сборку
2. авторизоваться под несколькими учетками
3. воспроизвести поведение протухших токенов, отправки диплинков и тп
4. дождаться результата
Нетрудно посчитать, что симулятором и руками у меня бы это заняло пару минут. Умножай на 10-15 кейсов = в лучшем случае пару десятков минут, а в худшнем пару часов.
С написанными заранее моками и другими сущностями на каждый кейс ушло по 5-10 сек
👍13🌚2
Оптимальный способ хранения кэша картинок
Anonymous Quiz
14%
CoreData
50%
NSCache
5%
Realm
25%
FileManager
2%
RAM
5%
UserDefaults
#books
Для кого-то любимая рубрика о книгах. Долго думал стоит ли писать что-то о ней после прочтения.
не советую.
Начало бодрое, но дальше уже вода водой. Кроме антипаттернов в конце и какой-то систематизации вначале не стоит тратить время
лучше уж рефакторинг, клин или другие популярные книги перечитать
Для кого-то любимая рубрика о книгах. Долго думал стоит ли писать что-то о ней после прочтения.
не советую.
Начало бодрое, но дальше уже вода водой. Кроме антипаттернов в конце и какой-то систематизации вначале не стоит тратить время
лучше уж рефакторинг, клин или другие популярные книги перечитать
👍5😁1🌭1
Этот канал не только про иос разработку, а в том числе и про образ жизни. Поэтому буду делиться вещами, которые помогают мне лучше кодить. А вы делитесь тоже.
Одна из супер главный вещей для прогера — музыка. Она создает ритм и фон работе. Теперь будем собирать плейлисты для эффективной работы в такой сложной науке как кнопкостроение.
Начну с себя. Хоть я нихера не музыкант и не смогу описать собранный жанр, но попробую описать сердцем.
Собранные мной звуки электронной музыки бьют нотами индустриализации и модерна.
Здесь смешалось всё. Симфонии фиксов багов. Танец битов и байтов. Скачки напряжение и толчки бассов фокусят на тональность дедлайна. Где-то музыка давит тяжестью толстых реквестов. Где-то окрыляет быстрой сборкой.
🎹 плейлист: https://music.yandex.ru/users/levbond93/playlists/1013
Одна из супер главный вещей для прогера — музыка. Она создает ритм и фон работе. Теперь будем собирать плейлисты для эффективной работы в такой сложной науке как кнопкостроение.
Начну с себя. Хоть я нихера не музыкант и не смогу описать собранный жанр, но попробую описать сердцем.
Собранные мной звуки электронной музыки бьют нотами индустриализации и модерна.
Здесь смешалось всё. Симфонии фиксов багов. Танец битов и байтов. Скачки напряжение и толчки бассов фокусят на тональность дедлайна. Где-то музыка давит тяжестью толстых реквестов. Где-то окрыляет быстрой сборкой.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤🔥7👍2🔥1🤔1
GoF паттерны и SOLID принципы на практике в Swift
https://github.com/SebastianBoldt/Gang-of-Four-and-Solid-Principles-in-Swift
https://github.com/SebastianBoldt/Gang-of-Four-and-Solid-Principles-in-Swift
GitHub
GitHub - SebastianBoldt/Gang-of-Four-and-Solid-Principles-in-Swift: 👨👩👧👦 - My personal Repo to learn all 23 Gang of Four patterns…
👨👩👧👦 - My personal Repo to learn all 23 Gang of Four patterns and all SOLID Principles using Swift and Playgrounds - SebastianBoldt/Gang-of-Four-and-Solid-Principles-in-Swift
🔥7❤3
Single Responsibility Principle
В "Чистой архитектуре" Мартин говорит:
Принцип единственной ответственности касается функций и классов, но он проявляется в разных формах на еще двух более высоких уровнях:
На уровне компонентов он превращается в принцип согласованного изменения
💎
Принцип согласованного изменения — в один компонент должны включаться классы, изменяющиеся по одним причинам и в одно время. В разные компоненты должны включаться классы, изменяющиеся в разное время и по разным причинам. По сути это перефразированный SRP, только для компонентов. Иначе говоря, компонент не должен иметь несколько причин для изменений.
Если два класса тесно связаны, физически или концептуально, настолько, что всегда будут изменяться вместе, они должны принадлежать одному компоненту. Это поможет уменьшить трудозатраты, имеющие отношение к повторному выпуску, тестированию и развертыванию программного обеспечения.
Сходство с принципом единственной ответственности:
Принцип SRP требует выделять методы в разные классы, если они изменяются по разным причинам.
Принцип CCP аналогично требует выделять классы в разные компоненты, если они изменяются по разным причинам. Оба принципа можно привести к общей формуле:
Собирайте вместе все, что изменяется по одной причине и в одно время. Разделяйте все, что изменяется в разное время и по разным причинам.
- Common Closure Principle
В "Чистой архитектуре" Мартин говорит:
Принцип единственной ответственности касается функций и классов, но он проявляется в разных формах на еще двух более высоких уровнях:
На уровне компонентов он превращается в принцип согласованного изменения
Принцип согласованного изменения — в один компонент должны включаться классы, изменяющиеся по одним причинам и в одно время. В разные компоненты должны включаться классы, изменяющиеся в разное время и по разным причинам. По сути это перефразированный SRP, только для компонентов. Иначе говоря, компонент не должен иметь несколько причин для изменений.
Если два класса тесно связаны, физически или концептуально, настолько, что всегда будут изменяться вместе, они должны принадлежать одному компоненту. Это поможет уменьшить трудозатраты, имеющие отношение к повторному выпуску, тестированию и развертыванию программного обеспечения.
Сходство с принципом единственной ответственности:
Принцип SRP требует выделять методы в разные классы, если они изменяются по разным причинам.
Принцип CCP аналогично требует выделять классы в разные компоненты, если они изменяются по разным причинам. Оба принципа можно привести к общей формуле:
Собирайте вместе все, что изменяется по одной причине и в одно время. Разделяйте все, что изменяется в разное время и по разным причинам.
- Common Closure Principle
Please open Telegram to view this post
VIEW IN TELEGRAM
Medium
Common Closure Principle: The story of an evolving architecture
This article demonstrates how following Common Closure Principle when designing software components speeds up adding new features.
👍5🔥1
Какая архитектура UI слоя перекочевала в iOS с книги "Чистая архитектура"?
Anonymous Quiz
14%
MVC
10%
MVVM
6%
Микро-сервисная
4%
REDUX
26%
VIPER
17%
VIP
22%
PIDOR