You don’t have to duplicate @impl true and @spec for each variant of the same function. Just once is enough for the compiler and Dialyzer.
For the rest, the answer is always “it depends” but I prefer to have just one handle_info and then call several different private functions depending on which arm in the case statement you’re in. I feel it gives me the opportunity to make the code more self-documented by naming the private functions properly.
Again though, just a preference depending on the size of the code, and how unreadable it would be otherwise.


















