Na poli softwarové architektury se pomaluje schyluje k další revoluci. Už od 70. let jsme si pomalu zvykali na vyšší programovací jazyky, užívali si návrhových vzorů a s přibývajícím výkonem PC jsme si mohli dovolit jím více plýtvat. Pomalu jsme používali čím dál vyšší jazyky, až jsme došli k objektovým jazykům, také používáme mnohem víc návrhových vzorů, které používají hodně malých tříd, ctíme pravidla CleanCode a SOLID. Někteří došli až ke Clean Architecture s použitím IoC/DI a to je skvělé, kód je dobře testovatelný, skvěle se uržuje i rozšiřuje. Problém jsou, ale zvýšené nároky na CPU. Na PC problém nemáme, ale uživatelé si zvykly na přenosná zařízení. Na nich ne jen že bojujeme s výdrží baterie, ale často i výkonem CPU samotným. Roste počet uživatelů tabletů a mobilních telefonů a především se stále více rozrůstá Internet of Trash (IoT). Zařízení jsou malá, baterie i výkon slabé, zde není místo pro šifrování komunikace nebo jiné složité operace. Ne jen proto se mezi vývojáři poslední době rychle šíří vlna DDD, které nabízí řešení.
Do main driven design
Název je sám o sobě vše říkající. Vše co lze, dáme do main
metody. Tím zminimalizujeme počet skoků. Také se pokusíme zminimalizovat počet tříd nebo je nepoužíváme vůbec a ušetříme tak alokace. Pokud přeci jen potřebujeme nějakou metodu, můžeme ji opatřit atributem [MethodImpl(MethodImplOptions.AggressiveInlining)]
. Do main driven design přínáší i další výhody, například není potřeba pracovat s velkým množstvým souborů, vystačíme si s jedním i když poněkud delším souborem program.cs
.