Coding style Erlang编码标准和良好实践

Coding style Erlang编码标准和良好实践,coding-style,erlang,Coding Style,Erlang,我的团队正在我的新工作中学习一些二郎。现在我们已经编写了一些代码,但是代码开始变得有点混乱和不一致 我想知道是否有Erlang社区遵循的编码标准,可以用作基线。比如如何缩进,变量和函数的命名,如何构造模块等等 此外,是否有任何工具可以检查这些参数?我在思考Python世界中的PEP8或PyFlakes。我使用vim,它将检测语法错误,这很好,但我想进一步尝试保持一种良好、一致的风格,我们可以共享,并使代码更具可读性 更新:关于凯末尔的评论,我必须说这很有趣(我们会好好利用它),但并没有完全涵盖这

我的团队正在我的新工作中学习一些二郎。现在我们已经编写了一些代码,但是代码开始变得有点混乱和不一致

我想知道是否有Erlang社区遵循的编码标准,可以用作基线。比如如何缩进,变量和函数的命名,如何构造模块等等

此外,是否有任何工具可以检查这些参数?我在思考Python世界中的PEP8或PyFlakes。我使用vim,它将检测语法错误,这很好,但我想进一步尝试保持一种良好、一致的风格,我们可以共享,并使代码更具可读性


更新:关于凯末尔的评论,我必须说这很有趣(我们会好好利用它),但并没有完全涵盖这个主题。我的问题是说服团队使用尽可能一致的代码风格。说服所有人的一个好方法是使用Erlang社区推荐的编码风格。也许它不存在,但我想尝试一些简单的事情,比如选择CameCase而不是下划线的单词,这可以极大地帮助代码保持一致的外观并有助于可读性。

好吧,就是这样。它相当全面。

我不知道有一个。你觉得哪个更容易理解?这:

init([]) ->
   AChild = {'AName',{'AModule',start_link,[]},
         permanent,2000,worker,['AModule']},
   {ok,{{one_for_all,0,1}, [AChild]}}.
或者这个:

init([]) ->
   AChild = {
      'AName',
      {'AModule', start_link, []},
      permanent,
      2000,
      worker,
      ['AModule']
   },
   {
      ok, 
      {
         {one_for_all,0,1}, 
         [AChild]
      }
   }.
init([]) ->
   AChild = { 'AName'
            , {'AModule', start_link, []}
            , permanent
            , 2000
            , worker
            , ['AModule'] }
   { ok, 
      { {one_for_all,0,1}
      , [AChild] } }.
或者这个:

init([]) ->
   AChild = {
      'AName',
      {'AModule', start_link, []},
      permanent,
      2000,
      worker,
      ['AModule']
   },
   {
      ok, 
      {
         {one_for_all,0,1}, 
         [AChild]
      }
   }.
init([]) ->
   AChild = { 'AName'
            , {'AModule', start_link, []}
            , permanent
            , 2000
            , worker
            , ['AModule'] }
   { ok, 
      { {one_for_all,0,1}
      , [AChild] } }.

我喜欢最后一个,但一致性是最重要的。因此,我建议定义一个适合您的标准。

有一个名为的工具,可用于强制执行编码样式,但默认规则是来自(创建者)的规则,而不是整个Erlang社区的默认规则。

嗯,看起来非常模糊。在大多数情况下,对于Erlang的建议更一般,而不是更具体。含糊不清?那里有很多针对erlang的建议,对我来说并不“模糊”。我同意该页面中的建议可能比您使用多少空间更重要。我可能更喜欢第二个,但这里的问题是,对erlang社区是否有共识?第二个是我最不喜欢的。。。这可能是没有标准的原因。嗨!Elvis的设计非常灵活,可以通过指定自己的
Elvis.config
来配置要应用的规则。当从shell运行时,它还支持用户定义的规则,并且即使从命令行运行,也有计划支持这些规则。希望有帮助。Kemal Fadillah,grahamrhay,zxq9-很抱歉投了反对票,但是即使链接的资源很有用,如果链接无效,你的答案也不再有用了。但他认为德米特的贡献堪称典范,因为他的例子可能并非来自“官方”来源,但他花了时间和精力,以明确的方式提供了一些普遍有用的建议(他们在适当的情况下献出时间进行严厉批评,请参见)我制作了一个中等规模的示例项目(一个完整的UUID实现),具体体现了一种易于阅读、编写和模拟的风格。它涵盖了类型规范、edoc使用和Erlang代码布局和风格方面的一般编码实践:(在下一篇评论中继续)继续zxq9的回答:“介绍性文章:项目:文档:在位多行lambda声明和其他多行问题与在源代码中使用标签(在编译代码中进行比较)的问题在这里讨论:。”