De afgelopen tijd zijn wij binnen Webpirates fan geworden van het gebruik van fluent interfaces om onze code beter leesbaar te maken. In dit artikel wil ik laten zien hoe wij fluent interfaces inzetten om views en templates een stuk leesbaarder, schoner en eenvoudiger in gebruik te maken.
Wat is een fluent interface?
Kort gezegd maakt een fluent interface het mogelijk om de publieke API van een object op een efficiente en heldere wijze aan te spreken. De aanroepende code wordt hierdoor doorgaans sterk verkort, beter leesbaar en eenvoudiger in gebruik.
Het volgende voorbeeld laat zien hoe een class met een fluent interface in C# aangeroepen wordt:
De customer class bevat naast een aantal properties ook een functie om orders toe te voegen. De order class heeft ook een fluent interface geïmplementeerd waardoor het order object ook eenvoudig te configureren is.
Dezelfde aanroep, maar dan zonder fluent interface zou er als volgt uit zien:
Hoewel een fluent interface qua functionaliteit niets toevoegt ziet de code er een stuk overzichtelijker uit. Op wikipedia vind je heldere voorbeelden hoe je in verschillende talen een fluent interface kan maken. Ik zal hier dan ook niet verder op ingaan.
Fluent interfaces in views
Binnen Webpirates gebruiken we fluent interfaces met name in views en templates. Views bevatten voornamelijk html en verschillende helperobjecten om eenvoudig html te genereren op basis van data die aan de view toegewezen is. De helpers lenen zich dan ook uitstekend voor fluent interfaces. In php templates gebruiken wij bijvoorbeeld een helper voor het opbouwen van een dropdown list:
Voor ASP.NET MVC hebben we een HtmlHelper ontwikkeld waarmee eenvoudig en snel een grid (jqGrid) gegenereerd kan worden. De interface ziet er dan bijvoorbeeld zo uit:
Fluent interfaces maken object interfaces beter leesbaar en makkelijk hanteerbaar. De meerwaarde van fluent interfaces komt vooral tot z’n recht als binnen het object nieuwe objecten aangemaakt kunnen worden, zoals nieuwe kolommen in het grid voorbeeld. De code wordt dan aanzienlijker korter en overzichtelijker.
Top comments (0)