Здрастуйте, Хабр!

Не так давно у видавництві «Manning» вийшла непроста, але довгоочікувана і вистраждана автором книга про функціональне моделювання предметних областей.



Оскільки у нас готуються книги як Scala і паттернам предметно-орієнтованого проектування, опублікуємо одну з статей сахіба Гоша про ідеї, закладені в його книгу, і запитаємо, наскільки ця книга була б вам цікава

Читати далі →

Відповідь на введення в проектування сутностей, проблеми створення об'єктів

Після прочитання статті Введення в проектування сутностей, проблеми створення об'єктів на хабре, я вирішив написати розгорнутий коментар про приклади використання Domain-driven design (DDD), але, як водиться, коментар виявився занадто великим і я вважав правильним написати повноцінну статтю, тим більш що питання DDD, на хабре і не тільки, видаляється мало уваги.
DDD
Рекомендую прочитати статтю про яку я буду тут говорити.
Якщо коротко, то автор пропонує використовувати білдери для контролю за консистентностью даних в сутності при використанні DDD підходу. Я ж хочу запропонувати використання Data Transfer Object (DTO) для цих цілей.

Читати далі →

Готуємо ORM не відходячи від плити

image

Дана стаття не є закликом до екстремізму розробки велосипедів. Мета посту в тому, щоб добре зрозуміти механізм, часто його треба створити з нуля. Особливо це стосується такій ненадійній теми як ORM.

Читати далі →

Domain-Driven Design: тактичне проектування. Частина 2



Здрастуйте, шановні хабрапользователи! попередній статті ми розглянули стратегічне моделювання з допомогою підходу DDD. У ній було показано, як виділяти концептуальні межі, в рамках яких вирішуються окремі завдання предметної області –
обмежені контексти
.

Для реалізації конкретного
обмеженого контексту
використовується ряд більш низькорівневих тактичних шаблонів, які мають технічний характер, тобто ці шаблони використовуються для вирішення технічних завдань. Такими шаблонами є:
сутність
,
об'єкт-значення
,
служби предметної області
,
події
,
модулі
,
агрегати
,
фабрики
та
сховища
. Саме про них піде мова в цій статті.
Читати далі →

Domain-Driven Design: стратегічне проектування. Частина 1



Здрастуйте, хабрапользователи! У цій статті мова піде про предметно-орієнтованому проектуванні програмного забезпечення з використанням, в першу чергу, стратегічних шаблонів.

Даний підхід використовував Он Вернон у своїй книзі «Реалізація методів предметно-орієнтованого проектування». Мета написання цієї книги: дати можливість розробникам здійснити політ на літаку DDD (в дитинстві автор часто подорожував зі своєю родиною на невеликих літаках). Вид з висоти дає більш широке уявлення про проблеми моделювання, не даючи застрягти в різних технічних деталях. Спостерігаючи ландшафт DDD таким способом, можна усвідомити переваги як стратегічного, так і технічного проектування. Докладніше – під катом!
Читати далі →

Марсохід, Ініціалізація



У цій серії статей ми будуємо програмне забезпечення марсохода в відповідно з наступними специфікаціями. Це дозволить застосувати на практиці такі підходи:

  • Monolithic Repositories — MonoRepo (Монолітні репозиторії)
  • Command/Query Responsibility Segregation CQRS (Сегрегація відповідальності на читання і запис)
  • Event Sourcing — ES (Події як джерело)
  • Test Driven Development — TDD (Розробка через тестування)
ЗмістМарсохід, Введення
Марсохід, Ініціалізація

Спочатку нам потрібно ініціалізувати наш проект.
Читати далі →

Марсохід, Введення



Ласкаво просимо в серію статтею «Марсохід», де ми будемо використовувати наступні практики:

  • Monolithic Repositories — MonoRepo (Монолітні репозиторії)
  • Command/Query Responsibility Segregation CQRS (Сегрегація відповідальності на читання і запис)
  • Event Sourcing — ES (Події як джерело)
  • Test Driven Development — TDD (Розробка через тестування)
У цій вступній статті ми просто позначимо специфікації нашого марсохода.

Примітка. Цей приклад є адаптованою для потреб серії статей версією вправи, представленого на Dallas Hack Club, який зараз, на жаль, лежить.

Але спочатку давайте коротко пройдемося по згаданим вище термінів.
Читати далі →

Як ми спробували DDD, CQRS і Event Sourcing і які висновки зробили

Ось вже близько трьох років я використовую в роботі принципи Spec By Example, Domain Driven Design і CQRS. За цей час накопичився досвід практичного застосування цих практик на платформі .NET. У статті я хочу поділитися нашим досвідом і висновками, які можуть бути корисними командам, які бажають використовувати ці підходи в розробці.


Читати далі →

Unit-тестування в складних додатках

Жоден розробник в здоровому глузді і тверезій пам'яті при розробці складних додатків (> 100K LOC, наприклад) не стане заперечувати необхідність використання тестування взагалі і модульного тестування (unit tests) зокрема. Це так само вірно, як і те, що кожен розробник постарається виключити безглузду роботу з творчого процесу створення програми. Де ж та грань, яка відділяє необхідність від безглуздості, якщо ми говоримо про модульне тестування в контексті складних додатків? Пару своїх міркувань з цього приводу я виклав під катом.
Читати далі →

Про модель, логіку, ООП, розробку та інше

Чи Часто ви замислюєтеся – чому щось зроблено так чи інакше? Чому у вас микросервисы або моноліт, двухзвенка або трехзвенка? Навіщо вам багатошарова архітектура і скільки у вас взагалі шарів? Що таке бізнес-логіка, логіка програми, презентаційна логіка і чому все так розділене? Подивіться на свою програму – як воно взагалі спроектовано? Що в ньому і де знаходиться, чому це зроблено саме так?
Тому що так написано в книжках чи так говорять авторитетні особистості? Які ВАШІ проблеми вирішує той чи інший підхід/патерн?
Навіть те, що на перший погляд здається очевидним, часом буває дуже складно пояснити. А іноді, у спробі пояснення, приходить розуміння того, що очевидні думки були і зовсім помилкові.
Давайте спробуємо взяти якийсь приклад і вивчити на ньому ці питання з усіх боків.

Читати далі →