在swannodette的clojurescript教程中(https://github.com/swannodette/lt-cljs-tutorial/blob/master/lt-cljs-tutorial.cljs),提到:
定义一个工厂函数,该函数返回defrecord/deftype所创建的实例是惯用的(也被推荐)。使用dash-case作为工厂名称是惯用的。
例如:
作为防止在用作库时更改实现的方法。
就这样吗?
缺点是多余的功能,需要与实现同时更新,名称可能略微不清晰。
我不喜欢模板式代码,所以当被给出这样的建议而没有解释时,我总是感到沮丧。
(defn person [first last]
(->Person first last))
为什么?
我能想到的唯一原因是,如果您正在使用一组参数,但它们与实现不匹配,可能会出现转换问题:
(defn person [full-name]
(->Person (first (split full-name)) ... ))
作为防止在用作库时更改实现的方法。
就这样吗?
缺点是多余的功能,需要与实现同时更新,名称可能略微不清晰。
我不喜欢模板式代码,所以当被给出这样的建议而没有解释时,我总是感到沮丧。