2rs*_*2ts 8 erlang standards types coding-style header-files
我对.hrl文件应该用于什么感到困惑.我的理解是.hrl文件可以包含任何有效的Erlang代码,并且使用该-include指令实际上将.hrl文件中的代码插入到包含它的任何模块中.
那么什么样的代码适合放入这些.hrl文件呢?Erlang的编程规则在记录方面说明如下:
如果要在多个模块中使用该记录,则应将其定义放在模块中包含的头文件(带后缀.hrl)中.
结果,我养成了在我的代码中执行此操作的习惯.但是,我喜欢在我的标题中添加诸如记录的实例化和比较函数以及类型定义之类的东西(因为这是我在C中会做的事情).这是不好的形式?是否应该从.erl文件中导出类型,即使它们在多个模块中使用?似乎没有关于可用的Erlang标头的最佳实践的文档.
kjw*_*188 10
LIke C,include语句将包含文件的内容直接添加到erl文件中.因此,将任何实际代码放入hrl文件将导致该代码被复制到您包含它的任何位置.这将导致每个Erlang模块中不必要的功能重复.
我会将任何实际的Erlang代码放在自己的erl模块中,以及hrl文件中的任何记录定义,类型规范或公共宏.记录定义和类型规范不会编译到二进制文件中,因此可以安全地包含在多个文件中.
通常,您将事物放在.hrl要在模块之间共享的内容中,通常记录定义和宏.对于您不会放在.hrl文件中的模块而言纯粹是本地的东西.因此,纯粹的本地记录定义(例如服务器中的本地状态)不会进入,.hrl而只会进入定义服务器的模块中.与宏定义相同.您应始终避免不必要地暴露内部信息.
由于包含文件直接插入到包含文件中,因此包含在其中的任何代码将在包含它的每个模块中复制.你通常不想这样做.
| 归档时间: |
|
| 查看次数: |
2391 次 |
| 最近记录: |