什么是Clojure';什么是命名约定?
有人能给我解释一下或告诉我在哪里可以找到clojure的命名约定吗什么是Clojure';什么是命名约定?,clojure,naming-conventions,Clojure,Naming Conventions,有人能给我解释一下或告诉我在哪里可以找到clojure的命名约定吗 文件名 函数(据我所知,函数名只是破折号分隔的值) 变数 你可能想看看开发者维基上的列表——这可能是我见过的最全面的列表 针对您的具体观点: 文件名是小写的,存储在目录结构中以匹配名称空间,并以.clj结尾,例如“my/special/namespace.clj” 函数是以破折号分隔的小写单词,理想情况下是以描述性方式选择的,这样您的代码就可以清晰且自我记录。不要害怕在不同的名称空间中重复使用好的函数名(这就是名称空间的用途!)
你可能想看看开发者维基上的列表——这可能是我见过的最全面的列表 针对您的具体观点:
尽管您没有明确要求,但我将解释我看到的协议命名约定 通常,名称以大写字母“I”开头,其余为驼峰式,每个单词的第一个字母大写,其余为小写。例如,我想为火箭飞船定义一个协议,我会使用名称IRocketShip
我还看到用“A”代替“I”,可能是用来表示“抽象”一词。你可能想看看。有一些有趣的建议:
- 纯函数应该是描述返回值的名词(
,而不是age
)calculateage
- 副作用函数应该是描述动作的动词(
用于构造,而create-
用于检索),保留对可变引用的更改get-
- 也可以是名词的动词应区分为动词短语(
,而不是发送消息
)消息
- 强制命名输出类型时应不带箭头前缀(
而不是连接
),除非输入类型必须是显式的(->连接
)输入类型->输出类型
- 命名空间别名可以在重复时保存(
而不是products/price
),并防止let绑定中的局部冲突products/product price
- 返回函数的函数应具有
后缀-fn
- 有一组有趣的命名约定记录在
陶恩索
他建议用
!
来命名副作用,用?
来命名布尔人,
$
对于昂贵的操作,\uu
作为可撤销的,
*
用于宏;加上一些其他组合。感谢链接。作为后续操作,文件名也是用破折号分隔的,即这个/is/a/file parser.clj
@tmore-是的,我相信是这样,只要它与名称空间匹配no,就必须用下划线替换文件名中的连字符。(命名空间a-b/c-d
必须位于a\b/c\d.clj
)这是名称模糊不清的Clojure必须与Java正确交互的一部分。Clojure 1.2.1的一个澄清点是:当您导入
Clojure记录时,您必须在Clojure代码中用下划线而不是通常的破折号来指代它所在的位置。可悲的是,上面的链接现在给出了我看到的主要位置之一这是在CLJS中,协议模拟CLJ中的Java接口,但我不认为这是一个一般性的建议。例如,请参阅core.async中的Rich协议:它今天甚至有一个很好的网站