当前位置:  开发笔记 > 人工智能 > 正文

帮助函数的命名约定是什么?

如何解决《帮助函数的命名约定是什么?》经验,为你挑选了3个好方法。

在函数式编程中,将任何"循环"代码优化为尾递归通常很重要.尾递归算法通常在两个函数之间分开,但是 - 一个用于设置基本情况,另一个用于实现实际循环.一个好的(尽管是学术的)例子是反向功能.

reverse :: [a] -> [a]
reverse = reverse_helper []

reverse_helper :: [a] -> [a] -> [a]
reverse_helper result [] = result
reverse_helper result (x:xs) = reverse_helper (x:result) xs

"reverse_helper"并不是一个很好的描述性名称.但是,"reverse_recursive_part"只是尴尬.

你会对这样的帮助函数使用什么命名约定?



1> ShreevatsaR..:

您可以随意调用辅助函数,只要不将辅助函数放在"全局"命名空间中就没关系.简单地添加"素数"似乎是一种常见的做法.:)例如,在Haskell中,

reverse :: [a] -> [a]
reverse = reverse' []
    where reverse' :: [a] -> [a] -> [a]
          reverse' result [] = result
          reverse' result (x:xs) = reverse' (x:result) xs



2> small_duck..:

我总是使用do_,比如"do_compute"和"compute".我发现它非常具有描述性,因为它实际上是执行动作的函数的一部分,而被调用的"计算"需要为外部世界提供一个简单的描述性名称.



3> Tom Lokhorst..:

我同意ShreevatsaR,如果你没有让帮助函数达到顶级(或者更糟糕的是,把它放在导出列表中),那么它的名字是什么并不重要.我倾向于调用辅助函数fg.

reverse :: [a] -> [a]
reverse = f []
  where
    f ys []     = xs
    f ys (x:xs) = f (x:ys) xs

我只是将这个命名方案用于小函数(否则我不知道它f指的是什么).那么,你为什么要写大函数呢?

但是,如果您确实要导出"帮助"功能,因为它可能对其他人有用,我会称之为:

reverseAccumulator

就像Haskell zipzipWith.但我不会称那些'帮助'函数,zipWith只是一个通用函数,并且zip是默认实现(可能是最常用的函数).

推荐阅读
oDavid_仔o_880
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有