我的担忧,与其说是开发者错误导致的意外泄露,不如说是如果是(可能是恶意的,或是高度随机的)用户输入可以击中多方法,那么这可能会引起真正的问题。
我相信大多数Clojure程序员都很小心,如果明确表示在此进行了缓存,那么人们就会三思而后行,不再有:default 方法,或者找到其他方法来关闭多方法的输入——但并不明确。我已经在专业上使用Clojure多年了,但我并不知道:default 匹配被缓存。
例如,memoize 会导致相同类型的问题,但我认为在那种情况下更清晰(你可能说是显而易见) whereas multi-methods 对于我来说有点过于微妙。
我不知道是否有解决方案,当然,快速响应很重要,而且在几乎所有情况下,我确信它是没事的。