Tag LINQ

Wat zegt deze code?

De namen in onze code – van variabelen, velden, methoden, parameters – beschrijven wat de code doet. De naam van een class beschrijft haar wezen: integer, Url, ResourceHelper. Anders dan bij mensen gaat de existentie van code niet vooraf aan haar essentie. Code is bepaald, bepaald door haar functie. Wat die functie is, weet een goede programmeur in een naam te vangen.

Callback hell

In mijn werk als C#-ontwikkelaar maak ik veelvuldig gebruik van functionele programmeerconcepten. Als een functie me een object T teruggeeft of niet, dan codeer ik dat netjes in de signatuur van die functie door een Option<T> terug te geven. Dat dwingt de aanroepende partij om beide scenario’s expliciet af te handelen. Hartstikke handig! – Maar: niet zonder zijn eigen set problemen. Want wat gebeurt er als je meerdere functies achter elkaar aanroept die allemaal een Option<T> teruggeven? Dan komen we terecht in wat men callback hell noemt.

ForEach, Aggregate en Select

ForEach gebruik je alleen als je een Action - zonder return value! - uit wil voeren voor elke lijstwaarde. Select gebruik je als je een resultaat verwacht. En Aggregate gebruik je als je het verschil tussen beide uit wil leggen. Of - vooruit - als je wil aggregeren.

Zes dingen die ik leerde op Techorama

Een tijd geleden bezocht ik softwareconferentie Techorama in Utrecht. Ik hoorde een boel nieuwe ideeën, werd gesterkt in enkele van mijn al bestaande overtuigingen, en uitgedaagd sommige ingesleten gewoonten te herzien. Uit mijn stapel aantekeningen destilleer ik zes inzichten die ik alleen al de eerste dag opdeed.

Wat is een functor?

Wat is een functor, vraag je? Lang verhaal kort: functors zijn typen die een Map-functie implementeren. Wat is een Map-functie, vraag je? Lang verhaal kort: ken je LINQ? - heb je wel eens Select gebruikt? - nou, dat dus. Maar misschien loont het zich er nét iets langer bij stil te staan.