[erlang-questions] Recommendations on optional callbacks

Garrett Smith g@REDACTED
Tue Jul 22 05:05:12 CEST 2014


On Mon, Jul 21, 2014 at 2:07 PM, Jay Nelson <jay@REDACTED> wrote:
> We have created a behaviour with -callbacks, but would like to simplify
> the implementation by providing default implementations of some of the
> callbacks. Using erlang:function_exported/3 to test for a user-supplied
> callback and instead calling a default implementation may work, but the
> compiler will complain for the user-defined module if no callback is
> supplied. What is the recommended best practice for this situation?
> The best I can come up with is to document the default implementation
> and leave it up to the user-defined module to call that function or
> provide its own so that the callback is always present.

e2 has lots of optional callbacks - they're just left out of the
behaviour_info/1 list.

I don't know what else you do here. You don't want to generate
warnings for optional callbacks.

Having optional callbacks is just plain common sense. Making people
suffer boiler plate is awful. If there's a possible default behavior,
the higher order module should implement it.

For performance sake, the higher order module notes the list of
exports on start_link (or other entry point) and stores them in state
rather than test on each call. This is sort of obvious though.

Garrett



More information about the erlang-questions mailing list