2014-09-03 95 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