什么是Clojure的命名约定?
任何人都可以解释或指出我在哪里可以findclojure的命名约定:
- 文件名称
- 函数(据我所知,函数名称是简单的破折号分隔值)
- variables
您可能想要查看开发者Wiki上的Clojure库编码标准 – 这可能是我见过的最全面的列表。
为了您的具体要点:
- 文件名是小写的,并存储在目录结构中以匹配命名空间,并以.clj结尾,例如“my / special / namespace.clj
- 函数是破折号分隔小写单词,理想的描述性select,以便您的代码清晰,自我logging。 不要害怕在不同的命名空间中重用好的函数名称(这是命名空间的用途!)。
- variables(我假设你的意思是参数,允许variables等等)也通常是用破折号分隔的小写字。 由于代码是数据,我认为这是适当的,function和数据具有相同的命名约定:-)
你可能想看看这个非官方的风格指南 。
关于斯图尔特·谢拉(Stuart Sierra)写的命名有一些有趣的指导方针build议:
- 纯函数应该是描述返回值的名词(
age
而不是calculate-age
) - 副作用函数应该是描述动作的动词(创build – 构build和
get-
检索),保留砰swap!
更改为可变引用。 - 也可以是名词的动词应该被区分为动词短语(
send-message
而不是message
) - 强制应该命名没有箭头前缀(
connection
而不是->connection
)的输出types,除非inputtypes必须是显式的(input-type->output-type
) - 命名空间别名可以节省重复(
products/price
而不是products/product-price
),并防止本地冲突绑定 - 函数返回函数应该有
-fn
后缀
即使你没有明确要求,我也会解释一下协议命名约定。
通常,名字以大写字母“I”开始,然后是骆驼大小写,每个单词的第一个字母大写,其余字母小写。 例如,我想为火箭船定义一个协议,我会使用名称IRocketShip
我也看到了'A'而不是'我',可能代表“抽象”这个词。