Next Previous Contents

2. 好的工程命名惯例和存档(archive)命名惯例

随着对诸如Metalab、PSA站点和CPAN存档维护的工作量的增加,就越来越趋向于用程序来处理 一部分或者所有的工作(而不是完全有人来完成)。

这就使得工程和存档文件的名称符合计算机程序可以解析和理解的常见模式变得越来越重要了。

2.1 把GNU风格的名字用于词干(stem)和major.minor.patch编码。

如果你的归档文件都使用类似GNU的名称 -- 全部由小写字母和数字组成的词干前缀,而后是 横线、而后是版本号、扩展名和其他后缀,那就对每个人都有帮助。

让我们假定你有一个称为`foobar'的工程是第1版,第2次发行,第3级。如果它只有一个归档 部分(大概是源代码),这就它应有的名字

foobar-1.2.3.tar.gz

源代码存档

foobar.lsm

LSM文件(假定你要提交到Metalab中)。

不要使用这些名字:

foobar123.tar.gz

对许多程序来说,它看起来像个名为`foobar123'的工程而没有版本号的存档。

foobar1.2.3.tar.gz

对许多程序来说,它看起来像个名为`foobar1'而版本号为2.3的工程。

foobar-v1.2.3.tar.gz

许多程序认为该工程称为`foobar-v1'。

foo_bar-1.2.3.tar.gz

对于人来说,下划线难于发音、输入和记忆

FooBar-1.2.3.tar.gz

除非你原意使你看上去像一个小市民(marketing weenie)。 对于人来说,它同样难于发音、输入和记忆。

如果你必须区分源代码和二进制存档,或者区分不同种类的库,或者在文件名中表达某种创建选项, 请把它们作为文件扩展名而放在版本号之后。就是,这样作:

foobar-1.2.3.src.tar.gz

源代码

foobar-1.2.3.bin.tar.gz

二进制码,没有给出类型

foobar-1.2.3.bin.ELF.tar.gz

ELF二进制码

foobar-1.2.3.bin.ELF.static.tar.gz

静态连接的ELF二进制码

foobar-1.2.3.bin.SPARC.tar.gz

SPARC二进制码

不要使用诸如`foobar-ELF-1.2.3.tar.gz'之类的名字,这是因为程序在 把类型中缀(比如`-ELF')从词干中区分出来的时候会遇到困难。

一个好的通用名称的形式按照顺序含有下列部分:

  1. 项目前缀
  2. 横线
  3. 版本号
  4. "src"或者"bin"(可选的)
  5. 点或者横线(点更好些)
  6. 二进制类型和选项(可选的)
  7. 归档和压缩扩展名

2.2 但在适当的时候尊重原有的习惯(local conventions)

某些工程和社团已经为名字和版本号定义了好的惯例,它不必与上述建议相兼容。 例如,Apache模块通常按照诸如mod_foo的形式命名,以及它们自己的版本号和与之工作 Apache的版本号。类似地,Perl模块含有可以被看作浮点数的版本号(例如,你可能 看到1.303而不是1.3.3),而且对模块Foo::Bar的1.303版的发布通常名为Foo-Bar-1.303.tar.gz。

寻找并尊重特定社团和开发者的习惯;对于一般用途,就服从上述的指引。

2.3 尽力去选择一个独一无二并且易于输入的名称前缀

词干前缀对于所有工程中的文件都应该是共有的,并且它应该易于诵读、输入和记忆。 所以请不要使用下划线。并且在没有极好的理由的时候不要用大写或者部分使用大写字母 -- 它会干扰人类眼球的搜索顺序而且看起来有点象小市民在耍小聪明。

在两个不同的工程使用相同的词干名的时候,将造成混淆。所以在你首次发行之前尽力 对冲突进行检查。一个进行检查的好地方是 index file of Metalab


Next Previous Contents