Я сейчас начинаю проект на языке Go и очень хочу использовать эту архитектуру, но мне перед ее использованием сначала нужно самому уяснить, как это работает. Есть готовые примеры кода на Go, но в каждом из них автор выразил свое понимание, а мне нужно выработать свое.
Давно знал про эту архитектуру, но проект достаточного для ее применения масштаба появился только теперь.
Для заметки: не все что UML это архитектура, есть и другой
подход C4 описания архитектуры(слайды) с точики зрения контекстов, компонентов, модулей. Также полезно посмотреть
наброски архитектуры (слайды).
Конечно я бросился искать готовые примеры, но они мены не устроили полностью. Так я решил разобраться в этой архитектуре лучше и собрал для себя материалы по этой теме, образцы кода, чтобы вывести свое понимание.
Материалы которые должны помочь уяснить суть:
The Clean Architecture оригинальная статья от Uncle Bob смотрел 2018-20-22
Заблуждения Clean Architecture, Habrahabr.ru смотрел 2018-20-22
The Clean Architecture: In Practice, Dec 27, 2014 - смотрел 2018-28-22
Uncle Bob's clean architecture - An entity/model class for each layer? StackExchange смотрел 2018-20-22
Guide to make gRPC service using clean architecture in golang 2018-02-22
Примеры кода на GO
Есть несколько репозитариев с демонстрацией кода которые следует Clean:
- https://github.com/manuelkiessling/go-cleanarchitecture обновление 2012г.
- https://github.com/alice02/go-cleanarch обновление 2017г.
- https://github.com/hirotakan/go-cleanarchitecture-sample (or mirror) обновление 2016г.
- https://github.com/CaptainCodeman/clean-go обновление 2017г. (мой форк https://github.com/r3code/clean-go/)
- https://github.com/bxcodec/go-clean-arch (вариация сервер с GRPC, клиент) обновление 2017г.
Примеры на других языках:
- Пример интерактора в JS, применяя принципы Clean, обновлено 2016г.
- JS and Clean Architecture (презентация, последовательный переход от обычной организации к Clean) обновлено 2016г.
- Подробный гайд по разработке Android-приложений с помощью Clean Architecture обновлено 2017г.
Инструменты
Даже есть
инструмент проверки на соответствие Clean, но опять же с точки зрения автора инструмента. Есть пример правильного и неправильного кода (по соответствию Clean).