Drupal专业开发指南 第21章 模块名字

永远不要在模块名字中使用下划线。为了理解这一点,考虑以下情景:

 
1.一个开发者创建了node_list.module,它包含了一个名为node_list_all()的函数。
2.Drupal的下一版本中,核心节点模块添加了一个函数node_list_all()―――命名空间冲突了!
 
    如果开发者遵守模块的命名习惯,不使用下划线,那么前面的冲突就可以避免:nodelist_all()将永远不会与核心代码冲突。
 
    对这一点的最简单的理解方式就是,把第一个下划线左边的任何东西看作是模块的名字,从而把“模块名+下划线”看作是一个命名空间。例如,在node_命名空间下的所有东西都属于核心中的节点模块。如果你编写的函数以node_ , user_ , filter_,或者其它核心命名空间起头,那么你这是自寻烦恼。如果你贡献的第3方模块中存在命名空间冲突,那么就意味着你需要为其花费更多的时间,而基于你的模块编写代码的人也需要花费更多的功夫。
 
    译者注:这一点确实很有道理,但是在许多的第3方模块中,许多模块的名字使用了下划线,比如advanced_forum,backup_migrate,og_forum等等。不过在用的时候一定要小心。
 

老葛的Drupal培训班 Think in Drupal

Drupal版本: