|
|
|
|
|
by hinkley
644 days ago
|
|
I don’t know Go well, but this API would surely piss Alan Kay off. Why a function that takes an Actor instead of each Actor being a type that implements a receive function? There’s so much Feature Envy (Refactoring, Fowler) in this example.
There is no world where having one function handle three kinds of actors makes any sense. This is designed for footguns. I also doubt very much that the Log() call is helping anything. Surely lathe API is thin enough to inline a that child. |
|
> Why a function that takes an Actor instead of each Actor being a type that implements a receive function?
That function is a method with receiver type `Actor` - IE `Actor` implements this HandleMessage function.
Granted it is exactly equivalent to ``` func HandleMessage(a *Actor, from gen.PID, message any) error { ... } ```
But I'm happy sticking with composition over inheritance