Reginald Braithwaite har jobbat med mjukvara länge och jobbat för både Github och nu PagerDuty. Hans talk om "first class commands" var en teknisk djupdykning i hur man kan se metod-körningar som körs som ett "command" och hur man gör för att hantera dessa som en "first class citizen" i sitt språk. I de flesta OOP-språk är object first class, dvs man kan spara dem i variabler, skicka in dem i, och returnera dem från, metoder. 

Vad är då poängen med detta? Om vi kan spara undan ett command för senare exekvering kan vi väldigt enkelt bygga en "Undo/Redo"-funktionalitet i vårt språk. Reginald demonstrerade detta genom att skriva en klass som hanterar en textsträng. På denna sträng kan man sedan göra olika Edit-kommandon, som t ex att byta ut delar av strängen mot något annat. Detta är en typ av separation of concerns som man gärna får till i kod för att minska komplexiteten. 

För er som är bekanta med event sourcing kan man se detta som events för metod-körningar.

I grund och botten är detta ett ganska enkelt pattern men det blir snabbt väldigt komplext, speciellt när man kommer till att kunna kombinera commands som körts på olika objekt. Till detta finns en rad olika tekniker man kan använda.

Vet ni vilken annan teknik som bygger på detta? Git. :) 

 

Comment