Question

J'ai hérité un peu de code J2ME où une seule classe a deux méthodes suivantes en elle:

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

Pour autant que je peux dire, ces deux méthodes font exactement la même chose. Bizarrement, les méthodes sont juste à côté de l'autre dans la classe, ce qui implique que celui qui les a mis là savait ce qu'ils faisaient.

sont ces méthodes essentiellement les mêmes? Puis-je me débarrasser d'un d'entre eux? (Ou probablement les deux, y penser).

Était-ce utile?

La solution

Il me semble que getOutputStream lancera une exception si le fichier n'existe pas.

Vous ne pouvez vous en débarrasser si personne ne repose sur ce comportement.

La refactorisation habituelle dans cette situation serait d'avoir un paramètre booléen ajouté à createOutputStream pour le faire savoir si elle doit créer le fichier si elle n'existe pas.

Autres conseils

FileConnector est disponible dans un package optionnel seulement, vous ne peut pas compter sur son existence.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top