首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Rebol、扩展和函数命名

Rebol、扩展和函数命名
EN

Stack Overflow用户
提问于 2013-04-03 03:46:08
回答 1查看 136关注 0票数 6

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

为了避免全局名称空间污染,我使用简单的前缀源标识符导出函数。例如:forkPOSIX-FORK,或nanosleepPOSIX-NANOSLEEP

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

EN

回答 1

Stack Overflow用户

发布于 2013-04-03 08:22:23

这是一个非常标准的Rebol导出命名约定,当然它们在代码中应该是小写的。当提到聊天客户端或网站中不能显示this等代码的函数时,全大写只是一种命名约定。通常情况下,Rebol代码中的任何单词都不会大写,除非它们用于其他用途。

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

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

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

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

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15773026

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档