独立脚本还是模块?
我一直在考虑一个问题:是做一个模块/包,还是让脚本独立运行。
我经常用Perl或Python写一些小脚本/程序来完成某些工作。有时候我会在几个程序中使用同一个子程序,但这些子程序都很小,这就让我陷入了困惑。
如果我让我的脚本独立运行,任何人都可以直接运行它,而不需要安装任何额外的包。如果它是一个单独的文件,在哪里都可以使用。然而,如果我做成一个模块,用户就需要在使用我的脚本之前先安装它。我还得考虑到,如果依赖的模块没有安装,用户在安装所需模块时可能会遇到问题。
所以,为了避免依赖问题,我更倾向于有一些冗余,不使用额外的包(当然,只有在我能做到的情况下。显然,我不会在所有脚本中重新实现XML::Twig
,但我可以为INI解析器或Perl到JSON的转换器这样做)。
另外,我通常会把所有脚本放在同一个目录下,比如/usr/local/mycompany/bin
。
对于那些不超过200行、使用人数少于20人的脚本/程序,最好的策略是什么呢?
补充说明:
我并不是在寻求个人意见。我只是想要一个非常务实和理性的答案,特别是来自那些有丰富编程经验的人。
为了给你一个更具体的例子。我有一个脚本,用来解析一种专有格式的配置文件。这种格式在我公司有很多人使用。然而,只有我的脚本在使用我的解析器。我觉得我只有三种选择:
- 把解析器(大约50行)放在我五个脚本的每一个里。
- 做一个漂亮的模块,需要在Perl/Python环境中安装。
- 使用一个独立的库,放在和其他脚本同一个目录下。
1 个回答
0
这是个错误的选择。你可以同时做两件事。
你可以创建一个模块,然后在你的脚本中使用它。等到要发布这些脚本的时候,可以把这个模块和脚本一起打包。你可以选择把它作为一个本地模块文件包含进来,或者把模块和脚本合并成一个文件。
这样一来,你的东西就不需要单独安装任何模块了。