curve

Kode Kataer

Dave Thomas skriver på sin blog om "Code Katas". Dave fik ideen til små tidsafgrænsede softwarelæringer da han var med sin søn til karate, og ikke kunne stå på sin sædvanlige plads i "parents viewing area".

Tidsafgrænsede softwarelæringer

Dave Thomas skriver på sin blog om “Code Katas”. Dave fik ideen til små tidsafgrænsede softwarelæringer da han var med sin søn til karate, og ikke kunne stå på sin sædvanlige plads i “parents viewing area”. Han fandt istedet en anden siddeplads og begyndte at lege rundt i sit udviklingsmiljø for at afprøve nye ideer.

I dit liv har du sikkert hele tiden travlt med at følge med på de konkrete opgaver, måske er det svært at få presset ekstra læring ind så det både er sjovt og uden den umiddelbart store betydning hvis ikke du kommer ret meget fremad.

Så, hvad med simpelthen at afsætte 2-3 ugentlige sessions af 45 min (eller hvad der nu passer dit temperament og dine omgivelser) til at lege med sjove nye ting. Jeg gør det gerne når vi har spist, ungerne er lagt i seng og min kone foretager sig andre ting.

Fidusen for mig er at holde mig selv fast på en backlog af emner, som jeg gerne vil vide mere om. Jeg bruger AgileZen (fra Rally) som min personlige Kanban tavle over mulige Coding Kata’s (og andre ting iøvrigt).

Senest så jeg i anden sammenhæng Scott Hanselsmans blog omkring interview-spørgsmål og FizzBuzz kodeøvelsen og tænkte at den kunne være meget god at tage en Kata på.

Write a program that prints the numbers from 1 to 100. But for multiples of three print “Fizz” instead of the number and for the multiples of five print “Buzz”. For numbers which are multiples of both three and five print “FizzBuzz”.

Se flere forslag på nettet (Dave’s Thomas har flere gode ideer).

Prøv selv kataen og download evt min løsning til FizzBuzz

public FizzBuzzer(int count)
{
    generated = new Dictionary<int, string>();
    for (int i = 0; i < count; i++)
    {
        var key = i + 1;
        if (IsDivisibleBy(key, 3) && IsDivisibleBy(key, 5))
        {
            generated.Add(key, "FizzBuzz");
        }
        else if (IsDivisibleBy(key, 3))
        {
            generated.Add(key, "Fizz");
        }
        else if (IsDivisibleBy(key, 5))
        {
            generated.Add(key, "Buzz");
        }
        else
        {
            generated.Add(key, key.ToString());
        }
    }
}

Har du brug for hjælp til et projekt?

Morten Hoffmann

CEO

T: (+45) 3095 6416