Over the years I’ve had my smart contracts inherit from their corresponding external interfaces. I’ve used this pattern as that is what OZ has done with the ERC20 and ERC721 token contracts.
Is that the best practice? Is it unnecessary / inefficient in terms of gas?
We received this response from another engineer in the space concerning the topic:
From a style/best practice perspective, it can be nice to define your external interfaces in one place, and implement it in another. It’s especially helpful to others who want to interact with your contract without deploying it themselves, since they can take the much smaller interface file and include that in their own project.
Excited to hear others thoughts. Ty!