Rule #3: Allow monkeypatching
Agree 5%. No monkeypatching should be the default, and
it should be documented clearly when a module allows it.
Efficiency is not the only reason for caching system functions
locally, and designing module functions to be definable abstractly
is not all that easy.
I see monkeypatching as just another tool - it has some sharp edges that can cut the user, yes. But so do anonymous functions and pass-by-reference parameters.
And as such, it should be enabled by default; the non-monkeypatchable case is the one that should be documented.
The user is already able to shoot his own foot. Let him nuke it if he wants to.
Rule #4: Make stateless modules
Agree 80%. The exceptions involve modules that are designed
to be used preloaded in interactive sessions.
Can you please elaborate on that one?
Rule #6: Break the rules
Agree 100%, when qualified by "but say why".
Yes, very good point. I will include "mention your reason" somewhere on the article. Thanks!
Enrique (kikito / @otikik)