Reguła DRY – tip #1

DRY – Don’t Repeat Yourself. Łamanie tej reguły ma tyle twarzy, że postanowiłem każdy mały przykład wrzucać.

Gorszy kod:

string GetFilePath()
{
    return IsForDebug
        ? $@"{Folder}\{Name}.{Extension}.{VersionNumber}"
        : $@"{Folder}\{Name}.{Extension}";
}

Lepszy kod:

string GetFilePathBetter()
{
    var filePath = $@"{Folder}\{Name}.{Extension}";

    if (IsForDebug)
    {
        filePath += $".{VersionNumber}";
    }

    return filePath;
}

Wiem że nie powinno się sklejać ścieżki w ten sposób tylko użyć Path.Combine(). Przykład z kodu.

Po komentarzu @marfusios2 zdałem sobie sprawę, że można to ulepszyć do

string GetFilePathMaybeBetter()
{
    var postfix = IsForDebug
        ? $".{VersionNumber}"
        : "";

    return $@"{Folder}\{Name}.{Extension}{postfix}";
}

Ciągle jest jeden zbędny string, ale już zdecydowanie krótszy.

3 Comments on “Reguła DRY – tip #1

  1. Widzie inny problem:
    + produkuje nowy string
    Metoda GetFilePathBetter w Debug bedzie alokowala dwa razy wiecej pamieci.

    • Tak, ale umówmy się to nie jest problem w większości aplikacji. Jeśli akurat jest to problem to wiemy o takich rzeczach i staramy się pisać w trochę inny sposób.
      Masz jednak rację że można to zrobić lepiej. Zrobiłem metodę GetFilePathMaybeBetter()

  2. Straszny mam problem gdzieś w środku głowy, bo z jednej strony lubię DRY, a z drugiej ten gorszy kod jest taki czytelny, a ten lepszy taki brzydki 🙂