String como Enum

Amigos,

Tenho um método que devolve um status que é usado em dois lugares dentro de uma mesma classe. Esse valor só faz sentido dentro do contexto interno da classe, tenho certeza de que nunca será usado fora da classe. Vcs veem algum problema em usar Strings no lugar de enum especificamente neste caso? O que poderia acontecer de errado com essa abordagem?

Por exemplo:

public String getStatus(Object parametro) {
    // Devolve umas das strings "null", "wrong class", "campo tal do objeto com problema" ou "ok"
}

Especificamente no meu caso preciso usar o tal status em duas situações, uma onde vou apenas devolvo um boolean quando o status for “ok” e na outra é diferente para cada status. Pensei em usar int para isso num primeiro momento, mas depois achei o uso de Strings mais descritivo. O que acham?

Obrigado!

Dá forma que melhor lhe atender, eu particularmente tenho preferência por usar classes ENUM, pois mesmo que o uso seja mínimo dentro de uma classe qualquer como é o caso que você descreveu, isso pode vir a mudar no futuro, talvez nem sempre permaneça da mesma forma, e a manutenção e legibilidade de código com classes ENUM é melhor do que Strings únicas definidas na própria classe de uso.

1 curtida

Eu concordo totalmente com o Jonathan, veja: A sua abordagem com String pode vir a lhe trazer complicações futuras, enquanto a classe enumerada não, então por que correr o risco?

Entendo o ponto de vista de vcs. No meu caso é um Matcher do Hamcrest que testa algumas propriedades de um Bean. Não vejo muito sentido que o Matcher retorne precisamente o status do teste para o mundo exterior. Mas também não vejo necessidade de fazer um enum (mesmo interno) para isso. Especificamente nesse caso não vi necessidade de forçar a tipagem.

1 curtida

Vai de constante msm

Então segue essa linha de pensamento que você já havia idealizado mesmo, se atende o que você precisa não vejo problema algum.