¿Es una buena práctica usar revert() en caso de que una función encuentre una coincidencia en caso de una búsqueda?

Esta función de solidez:

function findSupplierByName(string supplierName) public view returns (address id, string name) {
    for (uint idx = 0; idx < supplierAddresses.length; idx++) {
        address supplierAddress = supplierAddresses[idx];
        var supplier = suppliers[supplierAddress];

        if (keccak256(supplier.name) == keccak256(supplierName)) {
            return (
                supplier.id,
                supplier.name
            );
        }
    }

    revert();
}

Es esto correcto ? ¿O debería simplemente eliminar el revert(); declaración, para que esta función devuelva un 0 para la dirección y un "" para el nombre?

Respuestas (1)

Creo que querías revertir() si la función NO encuentra los datos. Para mantener la coherencia con lo que hace la función, haría que regresara (address(0), "")y que la función de llamada eligiera qué hacer cuando obtiene un valor de dirección nulo.

Si se supone que la función SIEMPRE debe encontrar un resultado, es posible que desee cambiar revert()a assert(supplier.id != address(0)).

¿Es una buena opción agregar un valor booleano que indique encontrado o no encontrado? función findSupplierByName (cadena nombre del proveedor) vista pública devuelve (bool encontrado, ID de dirección, nombre de cadena)?