2014-09-03 94 views
3

我总是有一个困境,选择制作模块/软件包还是保持独立的脚本。独立脚本或作为模块?

我经常写小脚本/ Perl或Python的是做一些工作计划。有时我在几个程序中使用相同的子程序,但它们只是小的子程序,这就是我的困境。

如果我把我的剧本独立的,任何人都可以不安装任何软件包运行它。如果它是一个文件,它可以在任何地方使用。但是,如果我创建了一个模块,我的用户需要在使用我的脚本之前安装它。我将需要考虑依赖模块不可用的例外,并且以后,用户在安装所需模块期间可能遇到问题。

所以,为了避免依赖关系问题。我更喜欢有一点冗余,没有使用任何额外的软件包(只有我能做到这一点)。显然,我不会在所有脚本中重新实现XML::Twig,但我可以为INI分析器或Perl转换为JSON转换器。

而且,我平时把我所有的脚本像/usr/local/mycompany/bin

会是什么,最好的策略相同的目录采纳为不超过200线,由少于20人使用脚本/程序?

编辑:

我不是要求个人意见。我只是从那些有着良好编程经验的人那里寻找一个非常务实和合理的答案。

给你一个更具体的例子。我有一个脚本以专有格式解析配置文件。这种格式被我公司的很多人使用。但是,只有我的脚本使用我的解析器。我想我只有三种选择:

  1. 在我的每个脚本中放置解析器(约50行)。
  2. 制作一个很好的模块,需要安装在Perl/Python发行版中。
  3. 使用位于其他脚本的同一目录中的独立库。
+0

不知在http://programmers.stackexchange.com的乡亲可能有一些见解。 – 2014-09-03 21:56:42

+0

Re。 “如果我将脚本单独保存,任何人都可以在不安装任何软件包的情况下运行它。”我一直编写需要安装模块的Perl脚本,即使脚本本身不是模块。看起来你真正想问的不是你应该写一个脚本还是一个模块,但是你是否应该避免*外部依赖*。这仍然是一个完全依赖于你的公司的主观问题,谁将使用代码,如何分配,谁将维护它等。 – ThisSuitIsBlackNot 2014-09-03 22:09:39

回答

0

假困境。你可以一次做两个。

你可以让你将在脚本中使用的模块,然后当谈到时间部署脚本,包括它与他们。将其作为本地模块文件包含,或实际将模块和脚本汇总到单个文件中。

这样一来,你的东西,不需要任何模块单独安装。

+0

非常有趣的答案! Perl是否存在一种将程序及其依赖关系合并到独立程序包的工具? – nowox 2014-09-03 22:14:59

+1

是的,检查[pp](http://search.cpan.org/perldoc?pp) – 2014-09-03 22:23:28

+0

另外[fatpack](https://metacpan.org/release/App-FatPacker)。 – tobyink 2014-09-03 23:46:32