"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > Artículo: devuelve colecciones o matrices vacías en lugar de nulas

Artículo: devuelve colecciones o matrices vacías en lugar de nulas

Publicado el 2024-11-06
Navegar:920

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

No devolver nulo:

  • Los métodos que devuelven nulo en lugar de colecciones o matrices vacías requieren un manejo adicional del cliente para evitar excepciones.

Problemas con nulo:

  • Los clientes deben agregar comprobaciones redundantes (si desean comprobar si hay nulos).
  • Las omisiones en estas comprobaciones pueden pasar desapercibidas y provocar errores.
  • Hace que sea difícil implementar el método que devuelve la colección o matriz.

Argumento en contra de nulo:

  • No se preocupe por el rendimiento de la asignación de colecciones o matrices vacías a menos que se demuestre que es un cuello de botella.

Alternativas eficientes:

  • Utilice colecciones o matrices vacías en lugar de nulas.
  • Las colecciones inmutables se pueden devolver repetidamente (por ejemplo: Collections.emptyList(), Collections.emptySet()).
  • Las matrices vacías también se pueden devolver de manera eficiente.

Rendimiento optimizado:

  • Utilice colecciones inmutables vacías reutilizables para evitar nuevas asignaciones innecesarias.
  • Devuelve la misma matriz vacía en lugar de crear una nueva cada vez

Ejemplos de código:
Método incorrecto que devuelve nulo:

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

Trato inadecuado al cliente:

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

Método correcto que devuelve una colección vacía:

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

Usando una colección vacía inmutable:

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

Usar con matrices vacías:

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

Uso optimizado de matriz vacía:

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

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

Conclusión:
Nunca devuelva nulo: prefiera siempre colecciones o matrices vacías. Esto simplifica la API, evita errores y rara vez afecta negativamente al rendimiento.

Declaración de liberación Este artículo se reproduce en: https://dev.to/giselecoder/item-54-retorne-colecoes-ou-arrays-vazios-em-vez-de-nulos-1ej6?1 Si hay alguna infracción, comuníquese con Study_golang @163.com eliminar
Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3