Item 54 – Retorne coleções ou arrays vazios, em vez de nulos

Não retorne null:

Métodos que retornam null no lugar de coleções ou arrays vazios exigem tratamento adicional do cliente para evitar exceções.

Problemas com null:

Clientes precisam adicionar verificações redundantes (if para verificar null).
Omi…


This content originally appeared on DEV Community and was authored by Java Efetivo (livro)

Não retorne null:

  • Métodos que retornam null no lugar de coleções ou arrays vazios exigem tratamento adicional do cliente para evitar exceções.

Problemas com null:

  • Clientes precisam adicionar verificações redundantes (if para verificar null).
  • Omissões nessas verificações podem passar despercebidas, resultando em bugs.
  • Dificulta a implementação do método que retorna a coleção ou array.

Argumento contra o null:

  • Não se preocupe com o desempenho da alocação de coleções ou arrays vazios, a menos que seja comprovadamente um gargalo.

Alternativas eficientes:

  • Use coleções ou arrays vazios em vez de null.
  • Coleções imutáveis podem ser retornadas repetidamente (ex.: Collections.emptyList(), Collections.emptySet()).
  • Arrays vazios também podem ser retornados de forma eficiente.

Desempenho otimizado:

  • Use coleções imutáveis vazias reutilizáveis para evitar novas alocações desnecessárias.
  • Retorne o mesmo array vazio em vez de criar um novo a cada vez

Exemplos de código:
Método incorreto que retorna null:

// Exemplo incorreto
public List<Cheese> getCheeses() {
    return cheesesInStock.isEmpty() ? null : new ArrayList<>(cheesesInStock);
}

Tratamento inadequado no cliente:

List<Cheese> cheeses = shop.getCheeses();
if (cheeses != null && !cheeses.isEmpty()) {
    // Lógica para lidar com queijos disponíveis
}

Método correto que retorna uma coleção vazia:

// Exemplo correto
public List<Cheese> getCheeses() {
    return cheesesInStock.isEmpty() ? Collections.emptyList() : new ArrayList<>(cheesesInStock);
}

Uso de uma coleção vazia imutável:

public List<Cheese> getCheeses() {
    return cheesesInStock.isEmpty() ? Collections.emptyList() : new ArrayList<>(cheesesInStock);
}

Uso com arrays vazios:

// Retorno de array vazio corretamente
public Cheese[] getCheeses() {
    return cheesesInStock.toArray(new Cheese[0]);
}

Uso otimizado de array vazio:

private static final Cheese[] EMPTY_CHEESE_ARRAY = new Cheese[0];

public Cheese[] getCheeses() {
    return cheesesInStock.toArray(EMPTY_CHEESE_ARRAY);
}

Conclusão:
Nunca retorne null: Sempre prefira coleções ou arrays vazios. Isso simplifica a API, evita erros e raramente impacta negativamente o desempenho.


This content originally appeared on DEV Community and was authored by Java Efetivo (livro)


Print Share Comment Cite Upload Translate Updates
APA

Java Efetivo (livro) | Sciencx (2024-09-12T14:27:29+00:00) Item 54 – Retorne coleções ou arrays vazios, em vez de nulos. Retrieved from https://www.scien.cx/2024/09/12/item-54-retorne-colecoes-ou-arrays-vazios-em-vez-de-nulos/

MLA
" » Item 54 – Retorne coleções ou arrays vazios, em vez de nulos." Java Efetivo (livro) | Sciencx - Thursday September 12, 2024, https://www.scien.cx/2024/09/12/item-54-retorne-colecoes-ou-arrays-vazios-em-vez-de-nulos/
HARVARD
Java Efetivo (livro) | Sciencx Thursday September 12, 2024 » Item 54 – Retorne coleções ou arrays vazios, em vez de nulos., viewed ,<https://www.scien.cx/2024/09/12/item-54-retorne-colecoes-ou-arrays-vazios-em-vez-de-nulos/>
VANCOUVER
Java Efetivo (livro) | Sciencx - » Item 54 – Retorne coleções ou arrays vazios, em vez de nulos. [Internet]. [Accessed ]. Available from: https://www.scien.cx/2024/09/12/item-54-retorne-colecoes-ou-arrays-vazios-em-vez-de-nulos/
CHICAGO
" » Item 54 – Retorne coleções ou arrays vazios, em vez de nulos." Java Efetivo (livro) | Sciencx - Accessed . https://www.scien.cx/2024/09/12/item-54-retorne-colecoes-ou-arrays-vazios-em-vez-de-nulos/
IEEE
" » Item 54 – Retorne coleções ou arrays vazios, em vez de nulos." Java Efetivo (livro) | Sciencx [Online]. Available: https://www.scien.cx/2024/09/12/item-54-retorne-colecoes-ou-arrays-vazios-em-vez-de-nulos/. [Accessed: ]
rf:citation
» Item 54 – Retorne coleções ou arrays vazios, em vez de nulos | Java Efetivo (livro) | Sciencx | https://www.scien.cx/2024/09/12/item-54-retorne-colecoes-ou-arrays-vazios-em-vez-de-nulos/ |

Please log in to upload a file.




There are no updates yet.
Click the Upload button above to add an update.

You must be logged in to translate posts. Please log in or register.