Frage

Ich habe ein bisschen von J2ME-Code geerbt, wo eine einzige Klasse die folgenden zwei Methoden in sich hat:

public DataOutputStream getOutputStream(String filePath) throws IOException
{
    return Connector.openDataOutputStream(filePath);
}


public DataOutputStream createOutputStream(String filePath) throws IOException
{
    FileConnection fc = (FileConnection)Connector.open(filePath);

    if(fc.exists())
        return fc.openDataOutputStream();
    else
        fc.create();
    return fc.openDataOutputStream();
}

Soweit ich das beurteilen kann, tun diese beiden Methoden genau das Gleiche. Seltsamerweise sind die Methoden direkt nebeneinander in der Klasse, was bedeutet, dass wer auch immer sie setzen dort wussten, was sie taten.

Sind diese Verfahren im Wesentlichen das gleiche? Kann ich loswerden einer von ihnen bekommen? (Oder vielleicht beides, darüber nachzudenken).

War es hilfreich?

Lösung

Es scheint mir, dass getOutputStream eine Exception aus, wenn die Datei nicht existiert.

Sie können nur loswerden, wenn niemand auf diesem Verhalten beruht.

Das übliche Refactoring in dieser Situation wäre einen zusätzlichen boolean Parameter createOutputStream, um es wissen zu lassen, ob er die Datei erstellen soll, wenn es nicht bereits vorhanden ist.

Andere Tipps

ist FileConnector in einem optional verpacken nur, damit Sie kann nicht auf seine Existenz verlassen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top