The evolution of quantum hardware is highlighting the need for advances in
quantum software engineering that help developers create quantum software with
good quality attributes. Specifically, reusability has been traditionally
considered an important quality attribute in terms of efficiency of cost and
effort. Increasing the reusability of quantum software will help developers
create more complex solutions, by reusing simpler components, with better
quality attributes, as long as the reused components have also these
attributes. This work focuses on the reusability of oracles, a well-known
pattern of quantum algorithms that can be used to perform functions used as
input by other algorithms. In particular, in this work, we present several
guidelines for making reusable quantum oracles. These guidelines include three
different levels for oracle reuse: the ideas inspiring the oracle, the function
which creates the oracle, and the oracle itself. To demonstrate these
guidelines, two different implementations of a range of integers oracle have
been built by reusing simpler oracles. The quality of these implementations is
evaluated in terms of functionality and quantum circuit depth. Then, we provide
an example of documentation following the proposed guidelines for both
implementations to foster reuse of the provided oracles. This work aims to be a
first point of discussion towards quantum software reusability. Additional work
is needed to establish more specific criteria for quantum software reusability.Comment: 10 page