2012-07-20 28 views
8

我使用下面的命令來測試我的Perl代碼:是否有我缺少的模塊來幫助我編寫更好的代碼?

的perl-MB ::林特:: StrictOO -MO =皮棉,全部OO -M-圓形::需要-M-間接-Mwarnings: :方法-Mwarnings ::未使用-c $文件

在perl版本低於5.10的系統上,我也使用uninit。

我也使用Perl :: Critic和Perl :: Tidy,並設置了合適的rc文件以符合我的喜好。

這些模塊在幫助我打破我在第一次學習perl時學到的一些壞習慣方面做得很好。

當我陷入困境時,是否還有更多的模塊或編譯指示可以讓我在直線和狹窄之間將其踢回去?

使用測試,已經指出了Test :: *系列模塊和一些好書。這些新信息使我重新考慮了有關測試和代碼技能構建之間關係的一些假設。這些都被讚賞,並且已經被研究並投入使用。

在我看來,這些是整體的兩個獨立部分。 'perl -c',Perl :: Critic和Perl ::在編寫代碼的過程中和執行代碼之前,整理所有幫助。 Devel :: Cover,Devel :: NYTProf和Tests在代碼執行期間和執行後發生。好的開發需要一個迭代過程,所以測試將會運行,並且代碼一遍又一遍地被開發出來,但是我們仍然有這種分離。

在我看來,答案的重點一直放在代碼的'執行期間和執行後'。再次,這是非常讚賞。我能否認爲我的「寫作和預執行」部分相當不錯呢?至少,與編譯指示,模塊和實用程序有關。

+2

可能是時間學習你的方式測試::更多,如果你還沒有這樣做。訓練自己在目標代碼之前編寫測試會鼓勵您使用更小,更易於管理,更常用的代碼塊進行編碼。並且測試你的代碼必須導致更好的代碼,如果一個更好的定義沒有多少bug。許多Test :: *模塊提供額外的檢查,而不費力氣。 – DavidO 2012-07-20 08:39:09

+0

我使用Test ::系列模塊很多...我沒有考慮過測試作爲提高編碼技能的方法。我儘可能使用DistZilla,這使得使用測試變得非常簡單,我利用它。看起來我需要回去開始評估Test :: modules。 – harleypig 2012-07-20 14:13:03

+0

這裏也有一些非常好的書。高階Perl。現代Perl。 (兩者都可以在網上免費得到,合法)。還有很多其他的,但這兩本書是學習Perl開明方法的好書。 – DavidO 2012-07-20 16:20:16

回答

4

我有點擔心你使用Perl 5.9。有兩個原因。

首先它有點舊了。 5.9.0在2003年發佈,5.9.5(5.9.x系列的最後一個版本)於2007年發佈。自那時起,有幾個高質量的Perl版本。其次(也是最重要的),5.9是Perl不穩定的開發版本。 5.9基本上是最終導致Perl 5.10.0的一系列實驗。使用它的唯一原因是測試5.10將成爲Perl的穩定版本。現在沒有人應該使用它。

+0

:]我同意,沒有人應該使用小於5.10的東西......甚至可能是5.14 ......但是應該是什麼以及通常是兩種不同的東西。我在遺留代碼上工作很多。我工作的一些服務器仍在使用5.004。 – harleypig 2012-07-20 14:06:55

+0

沒錯。我可以(只)明白爲什麼你可能會使用古老的Perl版本。但我不明白爲什麼你會使用不穩定的開發版本。 – 2012-07-20 15:23:51

+0

我的歉意......我沒有使用5.9我知道的任何地方......當我研究uninit在5.14盒子上失敗的原因時,我發現uninit在5.10中被刪除。生成該命令的代碼會檢查'$] <5.010',所以我傾向於認爲「5.9以下的任何內容」。對不起,在這方面的困惑。 – harleypig 2012-07-20 17:47:11

2

您似乎沒有在測試您的代碼,只是檢查它是否會編譯。我建議你看看Test :: More(這使得編寫實際的測試變得簡單易行),Test :: Class(這使得處理非常大的測試套件變得更容易)以及Devel :: Cover(查看代碼的哪些部分由你的測試覆蓋,而不是)。

+0

我正在測試我的代碼,只要有可能。我只是沒有認爲它是提高我的編碼技能的一部分。我現在將以不同的眼光來看待Test ::模塊系列。 – harleypig 2012-07-20 14:18:16

+0

我想說,如果不可能測試你的代碼(只要有可能,測試意味着你的代碼),那麼你應該重新編寫它來使* make *成爲可能!我意識到這並不總是實際的 - 例如,如果你正在與一些外部服務交談 - 但這是你應該始終瞄準的目標。如果你必須處理一個不可測試的外部接口,那麼考慮將代碼與其他應用程序中的代碼分離開來,這樣你就可以嘲笑這個接口,並且至少可以進行測試。 你真的應該看看Devel :: Cover。它在過去保存了我的工作。 – DrHyde 2012-07-20 19:02:21

相關問題