![]() |
1
19
好吧,我记得一些历史,还有我的风格背后的一些原则。 正如克里斯蒂安所说,图书馆的发展趋向于从我们当时的冲动中获得争论的秩序和感觉。因此,举例来说,元素/setelement之所以具有它们所具有的参数顺序,是因为它与prolog中的arg/3谓词相匹配;逻辑上是“then”,但不是“now”。我们经常会有 事情 先工作,但不幸的是并非总是如此。这通常是一个很好的选择,因为它允许将“可选”参数方便地添加到末尾;例如字符串:SUBSTR/2/3。函数 事情 最后一个论点经常受到函数语言的影响,例如haskell,在这里很容易使用curring和部分评估来构建特定的函数,然后将其应用到 事情 . 这在列表中的高阶函数中非常明显。 我们唯一没有的影响来自OO世界。-) 通常,我们至少设法在一个模块内保持一致,但并非总是如此。再次查看列表。我们确实尝试了一些一致性,因此dict/集合中高阶函数的参数顺序与列表中相应函数的参数顺序相匹配。 问题也因为我们, 特别是我 对图书馆的态度相当傲慢。我只是不把他们看作是语言的卖点,所以我并不担心。”如果你想要一个图书馆做点什么,那么你只需写下“这是我的座右铭”。这意味着我的库是结构化的,只是并不总是具有相同的结构。:-)这就是最初出现的库的数量。 当然,这会造成不必要的混乱,并破坏最不令人吃惊的规律,但我们对此无能为力。任何修改模块的建议都会得到一个响亮的“不”。 我个人的风格通常是结构化的,尽管我不知道它是否符合任何书面的指导方针或标准。 我一般都有 事情 或 东西 我正在努力作为第一个论点,或者至少是非常接近开始;顺序取决于什么感觉最好。如果有一个全局状态被链接到整个模块中(通常是这样),则将其作为最后一个参数放置,并给出一个非常描述性的名称,如st0、st1、…。(我属于短变量名教会)。通过函数(输入和输出)链接的参数试图保持与返回顺序相同的参数顺序。这使得查看代码结构更加容易。除此之外,我试着把属于一起的论点分组。另外,在可能的情况下,我试图在整个模块中保持相同的论点顺序。 这些都不是革命性的,但是我发现如果您保持一致的风格,那么就不必担心什么了,它会让您的代码感觉更好,而且通常更易于阅读。另外,如果参数顺序感觉错误,我会重写代码。 有助于:
在这里
抱歉,这比本应的时间长了很多。 P.S.我用了这个词 事情 而不是 对象 为了避免对我所说的话产生混淆。 |
![]() |
2
4
不,在你所指的意义上,没有一贯使用的成语。 但是,有一些有用的相关提示,特别是当您要进行深度递归调用时。例如,在尾部调用期间,保持参数列表中的相同顺序/位置不变,这允许虚拟机进行一些非常好的优化。 |
![]() |
mritalian · Erlang ETS内存碎片 7 年前 |
![]() |
david · Erlang:从主机名获取ip地址 7 年前 |
![]() |
Matt · 有没有办法访问GenServer的状态? 7 年前 |
![]() |
Chris W · 具有并行HTTP请求的Erlang网络问题 7 年前 |