I feel like "each level should provide more abstraction" is at odds with "encourage passing simple types like strings, numbers".
Also, I'd go further than "pass clones of objects instead of active instances" all the way to "only use mutable objects when performance demands it, and keep the scope of the mutability small".
Comments
I feel like "each level should provide more abstraction" is at odds with "encourage passing simple types like strings, numbers".
Also, I'd go further than "pass clones of objects instead of active instances" all the way to "only use mutable objects when performance demands it, and keep the scope of the mutability small".