我曾经花了几年时间学习Scheme,现在正在学习Clojure。在Scheme中,最佳实践之一是在父函数内定义辅助函数,从而限制它们在“外部”的可见性。当然,那时候没有TDD(测试驱动开发)的概念,因此测试这些函数并不是一个问题。
我仍然想以这种方式构建Clojure函数;即使用letfn在主函数内绑定辅助函数。当然,测试这样的“本地”函数是有问题的。我知道我可以定义“私有”函数,但这会将可见性范围限定为命名空间,这有所帮助,但粒度不够细。如果你遇到在另一个函数中使用letfn,很明显该函数不能用于普通用途。
因此,我的问题是,是否可以测试这样的本地函数,如果可以,如何测试?如果不能,那么是否有某种约定来帮助代码阅读,以便清楚地表明函数只有一个调用者?
谢谢! 比尔
我仍然想以这种方式构建Clojure函数;即使用letfn在主函数内绑定辅助函数。当然,测试这样的“本地”函数是有问题的。我知道我可以定义“私有”函数,但这会将可见性范围限定为命名空间,这有所帮助,但粒度不够细。如果你遇到在另一个函数中使用letfn,很明显该函数不能用于普通用途。
因此,我的问题是,是否可以测试这样的本地函数,如果可以,如何测试?如果不能,那么是否有某种约定来帮助代码阅读,以便清楚地表明函数只有一个调用者?
谢谢! 比尔