Как стать автором
Обновить

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

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



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

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


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

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

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



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

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

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

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

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



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

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

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

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



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

Профессионализм и TDD

Тестирование IT-систем *Программирование *TDD *
Перевод
Uncle BobПеревод статьи "Дяди Боба". Оригинал

В последнее время меня критикуют за то, что я связываю TDD с профессионализмом. Я признаю себя виновным и утверждаю, что связь существует.
Читать дальше →
Всего голосов 14: ↑7 и ↓7 0
Просмотры 7.5K
Комментарии 41

Прагматичное функциональное программирование

Совершенный код *Функциональное программирование *Clojure *
Перевод

Движение к функциональному программированию началось всерьез примерно десятилетие назад. Мы видели как такие языки как Scala, Clojure и F# стали привлекать внимание. Это движение было больше чем просто обычное восхищение «О, круто, новый язык!». Было что-то действительно побуждающее это движение — или мы так думали.

Читать дальше →
Всего голосов 31: ↑26 и ↓5 +21
Просмотры 15K
Комментарии 100

Контравариантные тесты

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

Привет, Хабр! Представляю вашему вниманию перевод статьи Test Contra-variance


От переводчика: честно говоря, выбор слов ко-/контравариантность, по отношению к дизайну тестов, немного странен. Семантика конечно прослеживается, но весьма метафорична. Скорее всего, просто для красного словца и заголовка, привлекающего внимание, поэтому не сильно придирайтесь. В остальном — прекрасная заметка на тему TDD в формате диалога. Рассказано почему TDD это так больно, как сделать из юнит-тестов приятный инструмент и не относится к ним как к обязательно ломающемуся насилию над свободой самовыражения.

Читать дальше →
Всего голосов 17: ↑16 и ↓1 +15
Просмотры 5.2K
Комментарии 64

SOLID

Совершенный код *Проектирование и рефакторинг *ООП *
SOLID критикует тот, кто думает, что действительно понимает ООП
© Куряшкин Виктор

Я знаком с принципами SOLID уже 6 лет, но только в последний год осознал, что они означают. В этой статье я дам простое объяснение этим принципам. Расскажу о минимальных требованиях к языку программирования для их реализации. Дам ссылки на материалы, которые помогли мне разобраться.

Читать дальше →
Всего голосов 53: ↑35 и ↓18 +17
Просмотры 254K
Комментарии 162

Управление зависимостями в Python: сравнение подходов

Python *Совершенный код *ООП *
Из песочницы
image

Я пишу на питоне лет пять, из них последние три года — развиваю собственный проект. Большую часть этого пути мне помогает в этом моя команда. И с каждым релизом, с каждой новой фичей у нас все больше усилий уходит на то, чтобы проект не превращался в месиво из неподдерживаемого кода; мы боремся с циклическими импортами, взаимными зависимостями, выделяем переиспользуемые модули, перестраиваем структуру.

К сожалению, в Python-сообществе нет универсального понятия «хорошей архитектуры», есть только понятие «питоничности», поэтому архитектуру приходится придумывать самим. Под катом — лонгрид с размышлениями об архитектуре и в первую очередь — об управлении зависимостями применимо к Python.
Читать дальше →
Всего голосов 23: ↑20 и ↓3 +17
Просмотры 18K
Комментарии 27

ФП vs ООП

Программирование *Java *Совершенный код *Функциональное программирование *
Перевод

Не так давно на хабре появилось несколько постов противопоставляющих функциональный и объектный подход, породивших в комментариях бурное обсуждение того, что вообще это такое — объектно ориентированное программирование и чем оно отличается от функционального. Я, пусть и с некоторым опозданием, хочу поделиться с окружающими тем, что думает по этому поводу Роберт Мартин, также известный, как Дядюшка Боб.


Читать дальше →
Всего голосов 42: ↑31 и ↓11 +20
Просмотры 40K
Комментарии 128

Войны платформ и приезд Uncle Bob в Россию: что было и что будет на DotNext

Блог компании JUG Ru Group .NET *


UPD: Когда мы писали эту статью, некоторые указанные в посте спикеры (включая Дядюшку Боба) планировали приехать на конференцию. К сожалению, ситуация изменилась. Также из-за запрета на проведение массовых мероприятий мы перенесли конференцию на другие даты. Следите за обновлениями на сайте конференции. 13 марта мы обновили этот пост, чтобы он не содержал некорректную информацию.

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


На петербургском DotNext 2020-го должно быть особенно масштабно: например, приедет Роберт «Uncle Bob» Мартин.


Какие ещё известные спикеры там будут? А какие доклады прошедшего DotNext, особенно понравившиеся зрителям, можно прямо сейчас посмотреть в записи? И что интересного было, помимо докладов? Мы сделали пост и о том, как всё прошло в Москве, и о том, чего ждать в Петербурге.

Читать дальше →
Всего голосов 23: ↑22 и ↓1 +21
Просмотры 2.9K
Комментарии 3

AI против тестировщиков, Брандашмыг, уточки: как прошёл Heisenbug 2019 Moscow

Блог компании JUG Ru Group Тестирование IT-систем *Тестирование веб-сервисов *Тестирование мобильных приложений *Тестирование игр *


На самом деле на фото: спикеры Алексей Виноградов и Барух Садогурский спорят, кто из них настоящий


UPD: Когда мы писали эту статью, некоторые указанные в посте спикеры (включая Дядюшку Боба и Маркуса) планировали приехать на конференцию. К сожалению, ситуация изменилась. Также из-за запрета на проведение массовых мероприятий мы перенесли конференцию на другие даты. Следите за обновлениями на сайте конференции. 13 марта мы обновили этот пост, чтобы он не содержал некорректную информацию.

У Heisenbug есть две онлайн-трансляции, и в открытую для всех попадают доклады первого дня из первого зала (а в платной есть доступ ко всем докладам обоих дней). И чтобы пост о том, как прошла конференция, был для вас интереснее и полезнее, мы для начала разобрали, что попало в открытую: так вы сможете не только узнать, что увидели люди в зале, но и по ссылке сразу же увидеть это самостоятельно.


А в конце написали, кто из спикеров следующей Heisenbug 2020 Piter уже известен — и среди них будет, например, Роберт «Uncle Bob» Мартин!

Читать дальше →
Всего голосов 17: ↑17 и ↓0 +17
Просмотры 2.9K
Комментарии 0

Что такое «чистый код» в 2020-м?

Блог компании JUG Ru Group Тестирование IT-систем *JavaScript *Совершенный код *.NET *

«Чистый код» и чистый кот

Разработчиков хлебом не корми, дай поспорить о чистоте кода: например, недавно шумиху навёл пост Дэна Абрамова «Goodbye, Clean Code».

Но при этом у самого понятия «чистый код» нет чёткого определения. Главная книга по этому вопросу — «Clean Code», где Роберт «Дядюшка Боб» Мартин сразу заявляет: «сколько программистов, столько и определений». Впрочем, из этого он делает не вывод «говорить об этом бесполезно», а вывод «стоит сравнить разные определения». Поэтому в книге он привёл мнения нескольких выдающихся программистов о том, что такое чистый код.

Нам стало интересно: в 2020-м представления человечества о чистом коде остались теми же, или с выхода книги как-то изменились? Различаются ли мнения у разных айтишников: может, бэкендеры видят всё с одного ракурса, а тестировщики с другого?

В апреле Дядюшка Боб прилетит в Петербург выступить на трёх наших конференциях, и они как раз по трём разным направлениям (про .NET-разработку, про тестирование и про JavaScript). Поэтому мы спросили нескольких спикеров этих конференций, что такое чистый код для них, чтобы сравнить мнения экспертов индустрии в 2020-м.

А поскольку тема холиварная, наверняка кто-то из вас окажется не согласен с какими-то из мнений. В таком случае айда спорить в комментариях, это тоже весело!

UPD: Когда мы писали эту статью, Роберт планировал приехать на наши конференции. К сожалению, ситуация изменилась. Также из-за запрета на проведение массовых мероприятий мы перенесли конференции на другие даты. Следите за обновлениями на сайте конференции. 13 марта мы обновили этот пост, чтобы он не содержал некорректную информацию.

Читать дальше →
Всего голосов 38: ↑37 и ↓1 +36
Просмотры 34K
Комментарии 14

What does «clean code» mean in 2020?

Блог компании JUG Ru Group Тестирование IT-систем *JavaScript *Совершенный код *.NET *

«Clean Code» and a clean cat

There is nothing developers enjoy better than arguing about clean code: Dan Abramov, for example, has recently fueled the hype with his blog post, «Goodbye, Clean Code».

However, “clean code” per se doesn’t even have a clear definition. The main book on the subject is Clean Code, where Robert «Uncle Bob» Martin states that there are perhaps as many definitions as there are programmers. But he doesn’t walk away from the fact with a conclusion that there’s no reason to discuss clean code, rather — compare several definitions and highlight general ideas. Therefore he cites the views of several outstanding programmers on what clean code is.

So we have also become interested in what people in 2020 think of clean code. Have the views changed since the publication of the book? Do opinions vary in different IT fields (maybe backend developers perceive the idea of clean code differently from testers)?

This spring, Uncle Bob comes to St. Petersburg to give talks at our three conferences: they are about .NET development, testing and JavaScript. Therefore, we’ve asked speakers from each of those conferences to share their opinion on clean code so we could compare the opinions of the industry experts in 2020.

We've already published the results in Russian, and here's the English version. Since the topic is known to provoke discussions, feel free to give your own definition or argue about those already given!

UPD: When we posted this article, Uncle Bob had our conferences in his schedule. Unfortunately, the situation has changed. We updated this post on March 12, to avoid any misunderstanding.

Read more →
Всего голосов 10: ↑10 и ↓0 +10
Просмотры 5.7K
Комментарии 0