Как стать автором
Обновить
  • по релевантности
  • по времени
  • по рейтингу

Чистая архитектура

Проектирование и рефакторинг *
Из песочницы
От переводчика: данная статья написана Дядюшкой Бобом в августе 2012 года, но, на мой взгляд, вполне актуальна до сих пор.



За последние несколько лет мы видели целый ряд идей относительно архитектуры систем. Каждая из них на выходе давала:

  1. Независимость от фреймворка. Архитектура не зависит от существования какой-либо библиотеки. Это позволяет использовать фреймворк в качестве инструмента, вместо того, чтобы втискивать свою систему в рамки его ограничений.
  2. Тестируемость. Бизнес-правила могут быть протестированы без пользовательского интерфейса, базы данных, веб-сервера или любого другого внешнего компонента.
  3. Независимоcть от UI. Пользовательский интерфейс можно легко изменить, не изменяя остальную систему. Например, веб-интерфейс может быть заменен на консольный, без изменения бизнес-правил.
  4. Независимоcть от базы данных. Вы можете поменять Oracle или SQL Server на MongoDB, BigTable, CouchDB или что-то еще. Ваши бизнес-правила не связаны с базой данных.
  5. Независимость от какого-либо внешнего сервиса. По факту ваши бизнес правила просто ничего не знают о внешнем мире.


Диаграмма в начале этой статьи — попытка объединить все эти идеи в единую эффективную схему.
Подробности далее ...
Всего голосов 24: ↑22 и ↓2 +20
Просмотры 85K
Комментарии 27

Чистая архитектура в Go-приложении. Часть 1

Проектирование и рефакторинг *Go *
От переводчика: данная статья написана Manuel Kiessling в сентябре 2012 года, как реализация статьи Дядюшки Боба о чистой архитектуре с учетом Go-специфики.



Перед этой статьей я перевел ее прообраз — смотреть здесь. Поскольку в рамках этой статьи будет активно использоваться описанное в статье Дядюшки Боба, то лучше начать с нее… если Вы, конечно, ее еще не читали.

В отличие от первой статьи, в названии внутреннего слоя здесь фигурирует Domain вместо Entity (Сущность) и при переводе я так и оставил этот термин, чтобы избежать путаницы, поскольку он фигурирует так же и в исходном коде примеров. Так же я перевел Domain как Домен, поскольку на мой взгляд этот термин тут имеет более широкую смысловую нагрузку.

В данной части будет описана общая концепция и работа с внутренним слоем.
Итак, начнем ...
Всего голосов 35: ↑27 и ↓8 +19
Просмотры 37K
Комментарии 11

Чистая архитектура в Go-приложении. Часть 2

Проектирование и рефакторинг *Go *
От переводчика: данная статья написана Manuel Kiessling в сентябре 2012 года, как реализация статьи Дядюшки Боба о чистой архитектуре с учетом Go-специфики.



Это вторая статья цикла об особенности реализации Чистой Архитектуры в Go. [Часть 1]

Продолжим ...
Всего голосов 16: ↑5 и ↓11 -6
Просмотры 14K
Комментарии 22

Чистая архитектура в Go-приложении. Часть 3

Проектирование и рефакторинг *Go *
От переводчика: данная статья написана Manuel Kiessling в сентябре 2012 года, как реализация статьи Дядюшки Боба о чистой архитектуре с учетом Go-специфики.



Это третья статья цикла об особенности реализации Чистой Архитектуры в Go. [Часть 1] [Часть 2]
Интерфейсы ...
Всего голосов 19: ↑12 и ↓7 +5
Просмотры 15K
Комментарии 11

Почему VIPER это хороший выбор для вашего следующего приложения

Анализ и проектирование систем *Разработка под iOS *Разработка мобильных приложений *Проектирование и рефакторинг *
Когда я прочитал статью, в которой автор рассказал про то, что архитектура VIPER полна проблем, это вызвало у меня несколько негативные эмоции, после чего я сразу решил написать статью в поддержку архитектуры.
Читать дальше →
Всего голосов 32: ↑21 и ↓11 +10
Просмотры 12K
Комментарии 13

Дайджест интересных материалов для мобильного разработчика #216 (6 августа — 13 августа)

Блог компании Productivity Inside Разработка под iOS *Разработка мобильных приложений *Разработка игр *Разработка под Android *
В центре этой недели – история противостояния разработчиков, ДИТа Москвы и закрытие API для доступа к электронным дневникам. А кроме нее: автоматизация тестирования, чистая архитектура, мобильный фрод и многое другое.

Читать дальше →
Всего голосов 16: ↑14 и ↓2 +12
Просмотры 9.6K
Комментарии 0

Архитектура как бремя

Анализ и проектирование систем *Совершенный код *Проектирование и рефакторинг *ERP-системы *Управление проектами *
Перевод

За время своей карьеры я поработал с разными legacy-проектами, каждый из которых страдал от тех или иных изъянов.


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


В сущности, улучшение кода — дело довольно простое, особенно сейчас, когда движение за мастерство разработки ПО (software craftsmanship) продвигает хорошие практики в командах. Однако изменение стержневых частей систем, ограничений, введенных в самом начале их жизненного цикла, является чрезвычайно сложной задачей.


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


Читать дальше →
Всего голосов 15: ↑14 и ↓1 +13
Просмотры 6.9K
Комментарии 35

Понятнее о S.O.L.I.D

Программирование *Java *Проектирование и рефакторинг *IT-стандарты *
Recovery mode
Большинство разработчиков с разговорами о принципах архитектурного дизайна, да и принципах чистой архитектуры вообще, обычно сталкивается разве что на очередном собеседовании. А зря. Мне приходилось работать с командами, которые ничего не слышали о S.O.L.I.D, и команды эти пролетали по срокам разработки на многие месяцы. Другие же команды, которые следовали принципам дизайна и тратили очень много времени на буквоедство, соблюдение принципов чистой архитектуры, код-ревью и написание тестов, в результате значительно экономили время Заказчика, писали лёгкий, чистый, удобочитаемый код, и, самое главное, получали от этого кайф.

Сегодня мы поговорим о том, как следовать принципам S.O.L.I.D и получать от этого удовольствие.



Что такое S.O.L.I.D? Погуглите — и получите 5 принципов, которые в 90% случаев описываются очень скупо. Скупость эта потом выливается в непонимание и долгие споры. Я же предлагаю вернуться к одному из признанных источников и хотя бы на время закрыть этот вопрос.

Источником принципов S.O.L.I.D принято считать книгу Роберта Мартина «Чистая архитектура». Если у Вас есть время прочесть книгу, лучше отложите эту статью и почитайте книгу. Если времени у Вас нет, а завтра собес — велком.
Читать дальше →
Всего голосов 26: ↑18 и ↓8 +10
Просмотры 32K
Комментарии 37

Фреймворк Quarkus: как в нем реализуется чистая архитектура

Блог компании Издательский дом «Питер» Программирование *Java *Профессиональная литература
Перевод
Привет, Хабр!

Продолжая исследование новых фреймворков Java и учитывая ваш интерес к книге о Spring Boot, мы присматриваемся к новому фреймворку Quarkus для Java. Подробное описание его вы найдете здесь, а мы сегодня предлагаем почитать перевод простой статьи, демонстрирующей, как удобно при помощи Quarkus придерживаться чистой архитектуры.
Читать дальше →
Всего голосов 5: ↑5 и ↓0 +5
Просмотры 5.1K
Комментарии 3

Flutter + чистая архитектура: разбираем на примере

Разработка мобильных приложений *Проектирование и рефакторинг *Dart *Flutter *

На определенном этапе изучения новой технологии начинаешь задаваться вопросом, как правильно организовать архитектуру проекта. Мне в свое время повезло - попались опытные наставники, которые дали мудрые советы. Однако я считаю, что знания не должны лежать мертвым грузом, поэтому пишу эту статью в помощь начинающим (и не только) flutter-разработчикам.

Чистая архитектура - это концепция построения архитектуры систем, предложенная Робертом Мартином - в миру "дядюшка Боб". Концепция предполагает построение приложения в виде набора независимых слоёв, что облегчает тестирование, уменьшает связность и делает приложение более простым для понимания.

Flutter - стремительно набирающий популярность фреймворк для разработки кроссплатформенных приложений. В списке поддерживаемых платформ - iOS, Android, web, в бете находится поддержка десктопа.

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

Читать далее
Всего голосов 26: ↑25 и ↓1 +24
Просмотры 30K
Комментарии 27

Как скрам помогает стать более сильным разработчиком?

Анализ и проектирование систем *Управление разработкой *Agile *

Тема методологий и процессов разработки, как правило, не особо интересна разработчикам. Абсолютно нормально услышать: “Должен быть менеджер, который этим занимается.” Как мне кажется, большинство разработчиков попросту не видят достаточно ценности в том, чтобы понимать процессы компании. Однако, по моему опыту, это крайне важный компонент, который позволяет программистам становиться сильнее именно с технической точки зрения, а также двигаться по карьерной лестнице вверх. Эту связь я и попытаюсь показать.

Читать далее
Всего голосов 9: ↑6 и ↓3 +3
Просмотры 6.8K
Комментарии 7

Как событийно-ориентированная архитектура решает проблемы современных веб-приложений

Блог компании Издательский дом «Питер» Программирование *Проектирование и рефакторинг *
Перевод
Привет, Хабр!



Пока у нас продолжается распродажа на самые взыскательные вкусы, мы обратим ваше внимание на еще одну тему нашего творческого поиска: событийно-ориентированную архитектуру (EDA). Под катом вас ожидают красивые блок-схемы и рассказ о том, как данная инновационная парадигма помогает при разработке веб-приложений.
Читать дальше →
Всего голосов 6: ↑6 и ↓0 +6
Просмотры 8.6K
Комментарии 5

Как найти подходящую абстракцию для работы со строками в Android

Блог компании SimbirSoft Разработка мобильных приложений *Проектирование и рефакторинг *Разработка под Android *Kotlin *
Перевод

В своих проектах мы стараемся по мере необходимости покрывать код тестами и придерживаться принципов SOLID и чистой архитектуры. Хотим поделиться с читателями Хабра переводом статьи Hannes Dorfman – автора серии публикаций об Android-разработке. В этой статье описан способ, который помогает абстрагировать работу со строками, чтобы скрыть детали взаимодействия с разными типами строковых ресурсов и облегчить написание юнит-тестов. 

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

Читать далее
Всего голосов 6: ↑5 и ↓1 +4
Просмотры 2.3K
Комментарии 3

Реализуем чистую архитектуру на Flutter с cubit

Блог компании SimbirSoft Разработка мобильных приложений *Проектирование и рефакторинг *Dart *Flutter *

Соблюдать принципы чистой архитектуры – значит обеспечить удобство тестирования, поддержки и модернизации приложения. Понимание архитектуры и state management – это база, необходимая начинающему специалисту для успешной командной работы. В этой статье мы расскажем, как с помощью Cubit реализовать чистую архитектуру на примере стартового приложения Flutter – счетчика нажатий на кнопку. 

Читать далее
Всего голосов 4: ↑3 и ↓1 +2
Просмотры 4.8K
Комментарии 14

Модульная архитектура Symfony приложения

PHP *Symfony *
Из песочницы

Как известно, с ростом размера кода приложения его становится все сложнее и сложнее поддерживать. Рассмотрим подход, как с наименьшими усилиями структурировать код Symfony приложения так, чтобы снизить затраты на внесение в него изменений и упростить переиспользование или замену его частей. По каким принципам разбивать функционал на модули, как обобщать, как называть, разберем на примере. У нас будет цельное приложение, но если понадобится, выделить нужный компонент мы сможем с минимальными усилиями.

Читать далее
Всего голосов 13: ↑9 и ↓4 +5
Просмотры 2.9K
Комментарии 12