我一直在学习clojure几个星期,最近我开始阅读一些开源代码:clojure和clojurescript编译器以及一些类似om,boot,figwheel等库。clojure的长文件有什么用?
我注意到一些Clojure的文件是很长的,他们中的一些千余LOC。鉴于clojure的代码非常简洁而低级,该代码意味着比其他语言中的文件大得多的代码。
从OO背景的,你通常有每个文件一类和你尽量保持你的类短(SRP)我发现有点怪异。
我知道clojure代码主要由纯函数组成,它们比一些需要保持当前状态的可变类更容易推理,我发现我可以阅读和理解大多数一次一个的功能。但大多数功能设计得非常好,以至于它们不依赖于彼此:尽管您可以使用(filter odd?)
,但这并不意味着filter
和odd?
是相关的。但对于“每一天”的代码(LOB应用程序,网络应用程序等)来说,很难保持这些函数的自包含性(至少这是我的OO编程经验)。
我也看到的,他们在同一个文件中声明的所有组件clojurescript应用程序(OM,试剂等)的一些演示。我不知道这是因为它只是一个演示,在实际生活中的应用,你就会有一个product.clj
和category.clj
或者这只是Clojure的方式:让每个命名空间/模块/界上下文一个文件。
我想,如果我打开一个文件夹,我看到product.clj
,category.clj
,order.clj
,等我可以一目了然什么是关于该文件夹,不仅仅是有components.clj
或core.clj
更好的想法。
所以,我的问题是:
- 它是常见的“天天向上”的Clojure代码有这些非常长的文件吗?还是仅仅因为我正在阅读库代码,而“普通”代码更“模块化”,我的意思是:更多的文件和更少的长度。
- 这样长的文件是否会让人难以一目了然地理解应用程序的用途?像我上面的产品/分类/订单示例,或者一些clojuresque属性,这不是问题。
- 如果长文件是“Clojure的方式”,你如何处理冲突,重构,规划在一个团队......如果每个人都在接触相同的文件?