Hva er det jeg driver med nå da?

Her om dagen skrev jeg denne lille metoden:

private static void SetDuration(TimeSpan start, TimeSpan end, Action<double> doWithResult)

{

    var executionDuration = end - start;

    var diffInSeconds = executionDuration.TotalMilliseconds / 1000d;

    doWithResult(diffInSeconds);

}

.. som jeg brukte på denne måten:

SetDuration(userProcessorTimeStart, userProcessorTimeEnd, (d) => measurement.UserTime = d);

SetDuration(privilegedProcessorTimeStart, privilegedProcessorTimeEnd, (d) => measurement.SystemTime = d);

SetDuration(totalProcessorTimeStart, totalProcessorTimeEnd, (d) => measurement.TotalTime = d);

Det er lett for at det går litt krøll under topplokket når man driver og lærer seg nye programmeringsspråk og teknikker, og begynner å rote og blande det sammen med det man allerede kan. I Ruby bruker man mye kodeblokker – som til en viss grad tilsvarer lambda-uttrykk i C# – og jeg har nok blitt litt vel opptatt av hvordan dette lar seg utnytte.

Når man lærer nye ting er det ganske vanlig at man går gjennom en periode hvor man gjør ting unødvendig komplisert, rett og slett for å få erfaring med å bruke teknikkene, og jeg har faktisk brukt tilsvarende fremgangsmåte som dette til å lage noen ganske fine API’er tidligere, men denne gangen har jeg rett og slett glemt ut at metoder faktisk kan returnere verdier. Metoden skulle selvfølgelig se slik ut:

private static double GetDuration(TimeSpan start, TimeSpan end)

{

    var executionDuration = end - start;

    return executionDuration.TotalMilliseconds / 1000d;

}

.. og brukes slik:

measurement.UserTime = GetDuration(userProcessorTimeStart, userProcessorTimeEnd);

measurement.SystemTime = GetDuration(privilegedProcessorTimeStart, privilegedProcessorTimeEnd);

measurement.TotalTime = GetDuration(totalProcessorTimeStart, totalProcessorTimeEnd);

Håper du fikk deg en god latter. Eller kanskje du fikk en idé til hvordan dette kan benyttes i andre sammenhenger?

Kategorier: Polyglot, WTF.
RSS feed for kommentarene. Tilbaketråkk.

Én kommentar til “Hva er det jeg driver med nå da?”

  1. Vidar Lund Says:

    Eg fekk meg i alle fall ein god latter. ;)

Skriv en kommentar

Tillatte tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>


Torbjørn: La oss anta to ulike definisjoner av Template Method pattern - de to ytterpunkte...

Lars-Petter: Hei igjen. Siden du inviterer til å ta diskusjonen i bloggen, og har tatt deg t...

Torbjørn: Lars-Petter: Det er én måte å se det på. Det er absolutt fortsatt Template M...

Lars-Petter: Hei. Har du ikke i prinsippet her gått over fra Template Method (arv) til Strat...

Christian Abildsø: I alle fall i C#, så føles dette som kode som blir mer fleksibel men vanskelig...

Torbjørn: Hei Henrik, og takk for tilbudet. Ble oppmerksom på Rasberry Pi for under en uk...

Henrik Sandaker Palm: Ang. større hobby prosjekt. Du er som er en slik rakker på programmering har j...

Øivind Nilsen: Slutt å bruke mobilnummeret mitt som eksempel !...

Bjørn Einar Bjartnes: Jeg har også latt meg fascinere av Clojure, uten at jeg har kommet så veldig l...

Bjørn Einar Bjartnes: Sweet :) Jeg tror egentlig jeg liker det som det er, med musikk. Litt av utford...

Mulig relaterte linker

 Hold deg oppdatert

Søk i bloggen

Ferske innlegg

  • Template Method del 4: Multippel arv
  • Template Method Intermesso
  • Template Method del 3: Bare funksjoner
  • Template Method del 2: På vei mot funksjonell programmering
  • Kategorier

  • .net ninja (37)
  • Bøker (17)
  • Diverse prosjekter (35)
  • DSL (10)
  • Erlang (10)
  • F# (5)
  • Hardware (1)
  • Jobb (77)
  • Julekalender (51)
  • kjempekjekt.com (23)
  • LISP/Clojure (33)
  • NNUG / community (60)
  • O/RM & databaser (10)
  • Off topic (116)
  • OO-design/clean code (30)
  • Podcasts (14)
  • Polyglot (77)
  • Ruby (27)
  • Silverlight / RIA (3)
  • Software/verktøy (20)
  • Softwareutvikling (20)
  • Testing / TDD (30)
  • the contiki strip (13)
  • User experience (3)
  • WCF (3)
  • Webutvikling (32)
  • WPF (9)
  • WTF (12)
  • Last ned Wallpaper

    Programmeringsbloggens tøffe skrivebordsbakgrunn med snippets fra ulike språk laster du ned her!

    Abonner via epost

    Om du vil kan du få alle nye blogposter tilsendt til din epost. Abonner nå, det er kjempeenkelt!

    Meta