[erlang-questions] Recommendations on optional callbacks

Bengt Kleberg bengt.kleberg@REDACTED
Tue Jul 22 06:56:24 CEST 2014


How is loading of a new callback handled, when checking for exported
functions on start_link()?


On Mon, 2014-07-21 at 20:05 -0700, Garrett Smith wrote:
> 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
> _______________________________________________
> erlang-questions mailing list
> erlang-questions@REDACTED
> http://erlang.org/mailman/listinfo/erlang-questions

More information about the erlang-questions mailing list