2012-07-20 13 views
8

私はperlコードをテストするために次のコマンドを使用しています:より良いコードを書くのに欠けているモジュールがありますか?

perl-MB :: Lint :: StrictOO -MO =リント、すべて、oo -M-circular :: require -M-indirect -Mwarnings: :メソッド-Mwarnings :: unused -c $ファイル

5.10未満のperlバージョンのシステムでは、uninitも使用しています。

私はPerl :: CriticとPerl :: Tidyも使用しており、適切なrcファイルを好きなように設定しています。

これらのモジュールは、私が最初にperlを学んだときに学んだ悪い習慣を壊すのに役立ちました。

私が混乱すると、まっすぐに狭く戻ってきてくれるモジュールやプラグマはもうありますか?

Testを使用し、Test :: *モジュールのファミリーといくつかの良い本が指摘されています。この新しい情報により、テストとコードスキル構築の関係についてのいくつかの前提が再考されました。これらはすべて評価され、すでに調査され使用されています。

これらは全体として2つの別々の部分であると思われます。 'perl -c'、Perl :: Critic、Perl :: Tidyは、コードの作成中およびコードの実行前にすべての助けになります。 Devel :: Cover、Devel :: NYTProfとTestsはコードの実行中と実行後に発生します。

良い開発では反復プロセスが必要となるため、テストが実行され、コードが何度も繰り返し開発されていますが、まだこのような分離があります。

答えの焦点はコードの「実行中と実行後」です。再び、これは非常に感謝しています。私は「書き込みと実行前」の部分がかなりうまくいっていると思いますか?少なくとも、プラグマ、モジュール、ユーティリティは関係しています。

+2

あなたがまだそうしていない場合は、Test :: Moreの回りにあなたの方法を学ぶ時間がかかるかもしれません。ターゲットコードよりも前にテストを書くように自分自身を訓練することで、より小さく、より管理しやすく、しばしばより一般的なチャンクにコード化することができます。また、コードのテストでは、より良いコードの定義がバグの少ないコードになるようにする必要があります。 Test :: *モジュールの多くは、多くの労力をかけずに追加のチェックを提供します。 – DavidO

+0

私はTest ::一連のモジュールをたくさん使用しています...私は自分のコーディング能力を向上させる方法としてテストを考慮していませんでした。私は可能な限りDistZillaを使用しているため、テストを非常に簡単に使用できます。私は戻ってTest :: modulesを新しい視点で評価し始めなくてはならないようです。 – harleypig

+0

本当に良い本がいくつかあります。高次のPerl。現代Perl。 (どちらも無料のオンラインで正当に入手できます)他にもたくさんのものがありますが、それら2つはPerlに対する啓発的なアプローチを学ぶ良い本です。 – DavidO

答えて

4

Perl 5.9を使用していると少し気になります。 2つの理由から。

まず少し古いです。 5.9.0が2003年にリリースされ、5.9.5(5.9.xシリーズの最後のバージョン)が2007年にリリースされました。それ以来、いくつかの高品質バージョンのPerlがリリースされました。

第2に(最も重要なことに)、5.9はPerlの不安定な開発版です。 5.9は、基本的にPerl 5.10.0につながった一連の実験です。それを使用する唯一の理由は、5.10がPerlの安定版であることをテストすることです。誰もそれを今では使用してはいけません。

+0

:]私は同意します、誰も* 5.10未満のものを使用すべきではないでしょう...おそらく5.14でも...しかし、何があり、何が通常は2つの異なるものであるべきですか。私はレガシーコードをたくさん扱っています。私が扱っているサーバーの中には、まだ5.004を使用しているものがあります。 – harleypig

+0

Perlの痛みを伴う古代版を使用している理由を(ちょっと)理解できます。しかし、私はなぜあなたが不安定な開発版を使用するのか理解できません。 –

+0

私のお詫び...私は5.9を使用していません。なぜなら、私が知っているところでは...私は、uninitが5.14のボックスで失敗した理由を調査したとき、uninitが5.10で削除されたことがわかりました。コマンドを生成するコードは '$] <5.010'をチェックするので、私は '何でも5.9以下'と思う傾向があります。そのことを混乱させて申し訳ありません。 – harleypig

2

あなたのコードをテストしているように見えるのではなく、コンパイルすることを確認するだけです。 Test :: More(実際のテストをすばやく簡単に書く)、Test :: Class(非常に大きなテストスイートを扱いやすくする)、Devel :: Cover(あなたのコードのどのビットを見るかあなたのテストでカバーされているものではありません)。

+0

可能な限り私のコードをテストしています。私はそれを私のコーディングスキルの向上の一部とはみなしていませんでした。私は今Test ::モジュールのファミリーを別の光で見ていきます。 – harleypig

+0

私はあなたのコードをテストすることが今まで不可能であったなら(可能であればテストすることによって暗示される)、それを*可能にするために書き直すべきだと言いたいと思います!私は、これが常に実用的なわけではないことを認識しています。たとえば、あなたが外部のサービスと話している場合などですが、それはいつもやるべきことです。テストできない外部インタフェースを処理する必要がある場合は、残りのアプリケーションからコードを分離して、そのインタフェースを模擬し、少なくともできるだけ多くテストすることを検討してください。 あなたは本当にDevel :: Coverを見てください。過去に私の仕事を救ってくれました。 – DrHyde

関連する問題