Является ли хорошей практикой использование revert() в случае, если функция находит совпадение в случае поиска?

Эта функция твердости:

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

Это верно ? Или я должен просто удалить revert(); оператор, чтобы эта функция возвращала 0 для адреса и "" для имени?

Ответы (1)

Я думаю, вы имели в виду revert(), если функция НЕ находит данные. Чтобы поддерживать согласованность с тем, что делает функция, я бы вернул ее (address(0), ""), а вызывающая функция выбрала, что делать, когда она получает нулевое значение адреса.

Если функция ВСЕГДА должна находить результат, вы можете изменить ее revert()на assert(supplier.id != address(0)).

Является ли добавление логического значения, указывающего, что найдено или не найдено, также является хорошим вариантом? функция findSupplierByName (string supplierName) возвращает публичное представление (bool найдено, идентификатор адреса, имя строки)?