Делить проект на модули - довольно популярный подход при разработке приложений, особенно когда MVP выпущен, а приложение начинает неконтролируемого обрастать межмодульными зависимостями. Сперва модули выделяют в отдельные классы/структуры, реализуя взаимодействия через интерфейсы, на втором этапе часть модулей переезжают в отдельные таргеты, и используются в составе проекта, как фреймворки. И т.д.
Все это не просто решает многие проблемы, но и создает новые. К примеру зависимость модулей друг от друга создает потенциальные проблемы в скорости компиляции проекта, когда один модуль не может быть скомпилирован, пока не скомпилирован другой. И это лишь вершина айсберга.
Довольно интересный опыт есть у ребят в СберЗдоровье, их лид Кирилл Смирнов делится им в своих статьях (первая, вторая) на Хабре. Советую к прочтению.
Кстати, года три назад я выкладывал пост про ортогональность ваших проектов, и как наследование способно сделать вам плохо.
Немного избитых и не избитых советов для того, чтобы компилятор мог сделать немного больше статической диспетчеризации вместо динамической.
Используем final для классов
final class A() { ... }
Используем private и fileprivate для типов, свойств и методов
private class B() { func doSomething() { ... } }
Если у класса B нет детей, то вызов doSomething() в этом же файле может быть заменен на статический даже без final. И это то, о чем не так и редко забывают разработчики. Уровни доступа - не просто красивый API, но и увеличение скорости работы приложения.
🧑💻 Два наших замечательных коллеги, Сергей Гнатюк@gnatyuk_sergey один из сооснователей комьюнити и Василий Усов@dobbywankenoby автор канала Dev Channel, а также популярных книг по iOS разработке, стали героями независимого документального фильма о IT-индустрии!
🚀 Они рассказали о своем пути в IT, о том, какие технологии используют, какие проекты создают и какие проблемы решают. Они также поделились своим видением будущего IT и дали советы начинающим разработчикам
⚡️Фильм обещает быть очень интересным и познавательным, ведь в нем приняли участие не только наши коллеги, но и другие известные IT-специалисты из разных компаний, такие как Ровшан Насибов и Мехоношин Сергей
🎥 Фильм сейчас, еще в процессе монтажа и выйдет в следующем году. Но мы можем поделиться с вами видео со съемок, где вы увидите Сергея и Василия в действии
Смотрите видео, комментируйте в нашем чате, ставьте лайки и подписывайтесь на наш канал, чтобы не пропустить премьеру фильма! 🙏
🚀Поговорим про рынок мобильной разработки в 2024году
Новый год наступил, а проблемы не изменились: Куда двигаться? Началось ли падение рынка? Что учить? Чего ждать? Где работать? Как работать? Стоит ли вообще работать?
Завтра (24 января в онлайне на площадке Coffee&Code вместе с CEO TeachMeSkills Ильей Рублевским постараемся ответить на эти и другие вопросы.
🤢О чем поговорим: - Стоит ли начинать учиться в 2024 году? Говорят курьеры делают столько же. - Где сейчас находится рынок мобильной разработки? - Уже пора увольнять всех нативных разработчиков и переходить на Flutter? - Будет ли One more thing в этом году? - Как искать работу?
Буду рады вашим вопросам и комментариям.
Послушать и поучаствовать можно 24 января в 18:00 по этой ссылке
Вопрос ведения собственной базы знаний актуален как для начинающих, так и для опытных разработчиков. Лично у меня все еще какое-то мессиво из Markdown-файлов на гите, заметок в Notes, страничек в Xcode Playground и доковских файлов с главами новых книг.
Время от времени я пытаюсь их систематизировать и перенести в какой-то единый формат.
⭐️Несколько дней назад на канале у Льва увидел ссылку на статью на Хабре про нечто большее, чем просто менеджер заметок - Obsidian. Прочитал серию статей и понял, что хочу попробовать.
Obsidian основывается на формате Markdown, но при этом расширяет его возможности, строит связанные графы, использует теги, списки и тд. Очень важно то, что даже если когда-то разработчики откажутся от поддержки приложения, то сырые Markdown-файлы, которые лежат в папке с вашими проектами в Obsidian, смогут быть прочитаны любым другим редактором. То есть никаких проприетарных форматов.