Pergunta

Eu herdei um pouco de código J2ME, onde uma única classe tem os dois métodos a seguir:

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

Até onde eu sei, esses dois métodos fazem exatamente a mesma coisa. Estranhamente, os métodos estão próximos um do outro na classe, implicando que quem os colocou lá sabia o que estavam fazendo.

Esses métodos são essencialmente os mesmos? Posso me livrar de um deles? (Ou provavelmente ambos, pensando nisso).

Foi útil?

Solução

Parece -me que getOutputStream lançará uma exceção se o arquivo não existir.

Você só pode se livrar disso se ninguém confiar nesse comportamento.

A refatoração usual nessa situação seria ter um parâmetro booleano adicional para createOutputStream para que ele saiba se deve criar o arquivo se ainda não existir.

Outras dicas

FileConnector está disponível em um pacote opcional Somente, para que você não possa confiar em sua existência.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top