Domanda

Ho ereditato un po 'di codice di J2ME in cui una singola classe ha i seguenti due metodi in esso:

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();
}

Per quanto posso dire, questi due metodi fanno esattamente la stessa cosa. Stranamente, i metodi sono proprio accanto all'altro nella classe, il che implica che chi li ha messi lì sapevano quello che stavano facendo.

Sono questi metodi essenzialmente la stessa? Posso liberarmi di uno di loro? (O forse entrambi, a pensarci).

È stato utile?

Soluzione

Mi sembra che getOutputStream un'eccezione se il file non esiste.

Si può solo sbarazzarsi di esso se nessuno si basa su quel comportamento.

Il refactoring al solito in quella situazione sarebbe quello di avere un parametro booleano aggiunto alla createOutputStream per fargli sapere se deve creare il file se non esiste già.

Altri suggerimenti

FileConnector è disponibile in un pacchetto opzionale solo, in modo da non può contare sulla sua esistenza.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top