gpt4 book ai didi

Rebol、扩展和函数命名

转载 作者:行者123 更新时间:2023-12-04 15:00:34 27 4
gpt4 key购买 nike

我正在为 Rebol 3 (posix/fann/math) 做一些扩展。

为了避免全局命名空间污染,我使用简单的前缀源标识符导出函数。例如:POSIX-FORK对于 fork , 或 POSIX-NANOSLEEP对于 nanosleep .

有没有更好的方法或官方 Rebol 命名约定?

最佳答案

这是 Rebol 导出的非常标准的命名约定,尽管它们在代码中当然应该是小写的。当指代聊天客户端或网站中无法显示代码(如 this)的函数时,全大写只是一种命名约定。 .您通常不会在 Rebol 代码中将任何单词大写,除非它们用于其他用途。

但是,如果您想避免全局命名空间污染,请使用 options: [private] 声明您的扩展模块。标题。这将使您的模块的导出仅由使用 import 明确请求它们的模块或脚本导入。或 needs标题。这尤其适用于导出低级 C 类 API 的模块或扩展,这些 API 最好仅由实现高级包装器的模块导入。最好记住扩展的模块部分是一个完整的 Rebol 模块,通常最好将高级包装代码放在那里,根本不导出类 C 函数,让它们供内部使用。

另一个技巧是,当您导出常量或枚举值时,最好将它们放在模块中的一个对象中,然后导出该对象。这样您就不会导出到全局命名空间,并且可以保护单词不被修改。

另一个技巧是根本不导出东西,让人们使用 import 导入你的模块。功能。除非您将模块的单词标记为隐藏,否则即使它们没有导出,它们仍然可用。不过在大多数情况下这有点不方便,所以最好使用私有(private)模块。您还可以导出您的高级 API 而不是导出您的低级 API,因此如果有人想使用低级 API,则可以导入它。

在这里查看有关如何使用模块和扩展的更全面的答案:How are words bound within a Rebol module?

关于Rebol、扩展和函数命名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15773026/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com