2013-10-25 35 views
3

我寫了很多相當小的perl腳本。它們的範圍從10條到1000條,但中值大小隻有100條左右。當我開始編寫腳本時,我傾向於將事情分解成塊並創建子例程。會發生什麼事是我寫出來的腳本,看起來像構建相當小的腳本

sub mkdir { 
    ... directory testing logic ... 
    ... mkdir ... 
} 
sub createFile { 
    ... check for directory ... 
    ... try and create the file, exit if failure ... 
} 
sub somethingElse { 
    .... do stuff with the file that was created ... 
} 
sub yetAnotherThing { 
    ... do even more stuff ... 
} 

&mkdir; 
&createFile; 
&somethingElse 
&yetAnotherThing 

這一直顯得很奇怪,我的很多。我喜歡它最終是模塊化的,我可以輕鬆地評論某些任務,但我不確定這是構建這樣的小程序的最佳方式。

我的問題是:

  1. 沒有人有任何具體的原因,我不應該以這種方式結構腳本?我沒有看到許多其他人這樣做,所以感覺我可能做錯了什麼。
  2. 任何人都可以提出一個更好的方法來構造較小的腳本?我應該直接跳過創建子程序,並寫出我希望我的腳本按順序執行的操作嗎?我是否在說這個? :)

謝謝!

+3

沒有什麼不對,使函數[鬆散耦合](http://en.wikipedia.org/wiki/Loose_coupling),所以你可以把它們放在'.pm'中,並儘可能地重用它們。 –

+4

旁註;在函數調用中放入'&',並使用括號http:// stackoverflow。com/a/8915304/223226 –

回答

3

你在做什麼是正確的,它在編程中被認爲是很好的做法。這就是所謂的功能分解 - 你把你的任務分解成更小的功能。

事實上,在這個行業中,人們開始編寫大量的內聯代碼,然後在變得難以管理的時候開始重構代碼,使其變得更像你正在做的事情。

查看CPAN中的項目。他們大多數被分解爲小功能。實際上,其中大部分都進​​一步分解爲相關功能模塊。

這是一個很好的第一步。下一步是在您的代碼中編寫.pm相關函數的文件,您可以使用use。接下來的步驟是編寫面向對象的代碼。

+1

我想指出一種稱爲「乾淨代碼」的編程風格的倡導者建議每個函數應該有不超過5行的代碼。這聽起來很荒謬,但是當我看到我所寫的所有代碼時,我認爲我自己的工作的最佳範例或多或少遵從了這一規則。 – slebetman

2

您的方法對我來說看起來足夠明智,而且我確實在其他地方看到類似的腳本。

你的一些方法可能現在是一個舒適的習慣,你已經成長起來,應該得到一個更高層次的重新思考和慎重嘗試。一開始,有多少腳本包含幾乎相同的目錄和文件處理邏輯子例程?有一個很好的機會,你既可以:

  • 作出協調一致的努力,以找到一個CPAN模塊,這將使這些例程更短或不需要的。

  • 編寫自己的模塊以包含腳本之間共享的代碼。

這兩件事可以讓你變得更有效率,而且你似乎正在編寫很多這些腳本,這是值得追求的。