Ankündigung

Einklappen
Keine Ankündigung bisher.

Codestruktur, Alternative gesucht um nicht gegen „wiederhole dich nicht“ zu verstoßen

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Codestruktur, Alternative gesucht um nicht gegen „wiederhole dich nicht“ zu verstoßen

    Hallo zusammen

    In einer Klasse für Persistenz (alles Netzwerk Zeug, Async, daher try/catch auch nicht Hilfreich), habe ich nun 2 Fälle, bei denen mir die Methoden nicht gefallen und frage mich wie man es besser machen könnte?

    Es geht um die Situation, dass 2 Funktion nahezu das gleiche tun, aber etwas Unterschiedliches zurückgeben. Den Code doppelt zu schreiben (ca. 30 Zeilen je Funktion), finde ich ziemlich unschön.
    Unabhängig vom konkreten Fall/Beispiel, geht es mir darum wie man ganz allgemein so etwas besser lösen kann?

    Code erklärt es wohl besser als Worte, also mal ein Beispiel….

    Code:
    public XYZ GetData_GetObj(int uniqueID) {
    // Suche im Index-Verzeichnis nach dem Speicherort, wo das Objekt sein soll // Hole vom Speicherort das Objekt if(Objekt ist am Speicherort wirklich noch vorhanden und valide)
    return Objekt;
    else
    return null;
    } public int GetData_GetSpeicherort(int uniqueID) {
    // Suche im Index nach der Index Pos um Speicherort zu erhalten // Hole vom Speicherort das Objekt if(Objekt ist am Speicherort wirklich noch vorhanden und valide)
    return Speicherort-ID;
    else
    return 0;
    }

    Also einzige Lösung würde mir dieses Konstrukt einfallen (return + out Parameter):
    Code:
    public XYZ GetData_GetObj(int uniqueID, out int locationID) {
    locationID = 0; // Suche im Index-Verzeichnis nach dem Speicherort, wo das Objekt sein soll // Hole vom Speicherort das Objekt if(Objekt ist am Speicherort wirklich noch vorhanden und valide) {
    locationID = …;
    return Objekt;
    } else
    return null;
    }
    Schön finde ich das aber auch noch nicht wirklich… Irgendwelche Ideen für eine elegante Lösung?
    Zuletzt geändert von Quada; 19.03.2020, 11:04.
Lädt...
X