Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/clojure/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
什么是Clojure';什么是命名约定?_Clojure_Naming Conventions - Fatal编程技术网

什么是Clojure';什么是命名约定?

什么是Clojure';什么是命名约定?,clojure,naming-conventions,Clojure,Naming Conventions,有人能给我解释一下或告诉我在哪里可以找到clojure的命名约定吗 文件名 函数(据我所知,函数名只是破折号分隔的值) 变数 你可能想看看开发者维基上的列表——这可能是我见过的最全面的列表 针对您的具体观点: 文件名是小写的,存储在目录结构中以匹配名称空间,并以.clj结尾,例如“my/special/namespace.clj” 函数是以破折号分隔的小写单词,理想情况下是以描述性方式选择的,这样您的代码就可以清晰且自我记录。不要害怕在不同的名称空间中重复使用好的函数名(这就是名称空间的用途!)

有人能给我解释一下或告诉我在哪里可以找到clojure的命名约定吗

  • 文件名
  • 函数(据我所知,函数名只是破折号分隔的值)
  • 变数

  • 你可能想看看开发者维基上的列表——这可能是我见过的最全面的列表

    针对您的具体观点:

  • 文件名是小写的,存储在目录结构中以匹配名称空间,并以.clj结尾,例如“my/special/namespace.clj”
  • 函数是以破折号分隔的小写单词,理想情况下是以描述性方式选择的,这样您的代码就可以清晰且自我记录。不要害怕在不同的名称空间中重复使用好的函数名(这就是名称空间的用途!)
  • 变量(我假设你指的是参数,let bound Variables等)通常也是以破折号分隔的小写单词。由于代码是数据,我认为函数和数据具有相同的命名约定是合适的:-)

  • 尽管您没有明确要求,但我将解释我看到的协议命名约定

    通常,名称以大写字母“I”开头,其余为驼峰式,每个单词的第一个字母大写,其余为小写。例如,我想为火箭飞船定义一个协议,我会使用名称IRocketShip


    我还看到用“A”代替“I”,可能是用来表示“抽象”一词。

    你可能想看看。

    有一些有趣的建议:

    • 纯函数应该是描述返回值的名词(
      age
      ,而不是
      calculateage
    • 副作用函数应该是描述动作的动词(
      create-
      用于构造,而
      get-
      用于检索),保留对可变引用的更改
    • 也可以是名词的动词应区分为动词短语(
      发送消息
      ,而不是
      消息
    • 强制命名输出类型时应不带箭头前缀(
      连接
      而不是
      ->连接
      ),除非输入类型必须是显式的(
      输入类型->输出类型
    • 命名空间别名可以在重复时保存(
      products/price
      而不是
      products/product price
      ),并防止let绑定中的局部冲突
    • 返回函数的函数应具有
      -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协议:它今天甚至有一个很好的网站