什么是Clojure的命名约定?

任何人都可以解释或指出我在哪里可以findclojure的命名约定:

  1. 文件名称
  2. 函数(据我所知,函数名称是简单的破折号分隔值)
  3. variables

您可能想要查看开发者Wiki上的Clojure库编码标准 – 这可能是我见过的最全面的列表。

为了您的具体要点:

  1. 文件名是小写的,并存储在目录结构中以匹配命名空间,并以.clj结尾,例如“my / special / namespace.clj
  2. 函数是破折号分隔小写单词,理想的描述性select,以便您的代码清晰,自我logging。 不要害怕在不同的命名空间中重用好的函数名称(这是命名空间的用途!)。
  3. 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'而不是'我',可能代表“抽象”这个词。