Consider the following requirement. A Period can have anywhere from zero to forty eight Activities (though most will have only three) and each Activity within a Period should have a unique, non-sequential, two-digit identifier (e.g. 02, 41, 99).

Now consider how you might implement the code that generates a new identifier. Go ahead, think about it. I'll wait.

Got it? Good. Without even seeing your code, I can all but guarantee that it does not look anything like the code Rafael V's predecessor developed. Rafael found it when researching a customer ticket that simply read "something weird happens when we add 25... 22... or around there Activities; it's not consistent, and doesn't always happen at the same number."

public string GenerateNewActivityCode(Period period)
    Random rand = new Random();
    bool firstinuse = false;
    string firstcode = rand.Next(99).ToString();
    bool secondinuse = false;
    string secondcode = rand.Next(99).ToString();
    bool thirdinuse = false;
    string thirdcode = rand.Next(99).ToString();

    foreach (Activity activity in period.Activities)
        if (activity.Cod.Equals(firstcode))
            firstinuse = true;
        if (activity.Cod.Equals(secondcode))
            secondinuse = true;
        if (activity.Cod.Equals(thirdcode))
            thirdinuse = true;

    if (!firstinuse)
        return firstcode;
    if (!secondinuse)
        return secondcode;
    if (!thirdinuse)
        return thirdcode;
    return rand.Next(99).ToString();

Well, third time was supposed to be the charm.

[Advertisement] BuildMaster allows you to create a self-service release management platform that allows different teams to manage their applications. Explore how!