Perl の学習を開始しましたが、以前のプログラミング経験のほとんどは、C# や Java などのオブジェクト指向プログラミングを重視する言語でした。私が見つけたすべての Perl の例は、長い単一関数のプログラムである傾向があり、自分のコードを同じように書いていることがわかりました。保守しやすく構造化されたプログラムを作成するためのリソースやチュートリアルはありますか?
9 に答える
まず、あなたがやっている Perl プログラミングの種類に関係なく、おそらくPerl::Criticが非常に貴重であることに気付くでしょう。コマンド ライン ツールは、コードに関するフィードバックを取得するのに最も便利ですが、Perl コードをアップロードして自動化されたフィードバックを即座に受け取ることができるWeb インターフェイスもあります。Perl::Critic は良い構造を教えてくれるわけではありませんが、スタイル全般を改善し、いくつかのよくある間違いからあなたを遠ざけるのに役立つことに注意してください。
Perl::Critic を使用するには、 Perl Best Practices (PBP)のコピーを入手することをお勧めします。Perl::Critic の基礎となった多くの詳細な情報が含まれています。この本の特定のガイドラインに同意しない場合でも、コーディング方法について考えさせられます。これは非常に価値があります。本のために大金を払う必要はありませんが、この 2 つはお互いに非常にうまく補完し合っており、PBP には Perl::Critic から得られない長い議論があります。
他の OO 言語や OO 設計を既に使用している場合は、おそらくMooseが快適な移行であることがわかるでしょう。Moose は非常に安定しており、サポートも充実しており、巨大で活発なコミュニティ (特に IRC 経由) があります。Moose は、私自身のものを含め、ほとんどすべての既存の OO Perl アドバイスに取って代わります。オブジェクト指向設計が一般的であるには理由があります。これは多くのプロジェクトにとって意味があり、Perl で使用しない理由はありません。
個人的には、テスト駆動開発モデルに移行したときに、自分のプログラム構造が大幅に改善されたことに気付きました。このようなモデルでは、問題をテストしやすい小さな単位に分割することが不可欠です。Perl でのテストが初めての場合は、 Test::Tutorialから始めてください。さらに詳しく知りたい場合は、他のテスト リソースや書籍を参照してください。Devel::CoverやDevel::NYTProfなどのツールを使用して、テスト ケースがヒットしているものとヒットしていないものを確認します。テストが困難なコードを持つことは、多くの場合、構造が貧弱であることを示しています。
以上のことをすべて述べた上で、経験豊富な貢献者と共に既存の Perl プロジェクトに参加することは、はるかに優れた教師です。彼らがどのように物事を行うかを見て、あなたが貢献するときは、彼らのアドバイスについて考えてください。Perl コミュニティの最高の、そして最も優秀な人々を吸い取ったような、素晴らしいクールな価値のある実際のアプリケーションが必要な場合は、Perl エディターの Padre に参加することをお勧めします。
(何らかの理由で) 別のプロジェクトに参加できない場合は、コード サンプルを Stack Overflow やPerlMonksなどのコミュニティに投稿することを検討してください。さらに良いことに、コードをオープンソースにできる場合は、そうしてフィードバックを求めてください。すべてのプログラミング言語は、すでにその言語に精通している他の言語と一緒に学習した方がよいでしょう。Perl も例外ではありません。
Perlで良い魔法ができますように。
ポール
適切に構造化されたプログラムの書き方を既に知っていて、適切に構造化された Perl を書きたいと思っている場合、それを妨げる唯一の障害は、ネット上に散らばって死ぬことを拒否する、古くて粗雑なスパゲッティ コードの例が豊富にあることです。 ..
例は無視してください。または、少なくともそれらの貧弱な構造を無視して、学ぶ必要のある小さな構文にのみ注意を払います。
Perl には、悪いコードを書くように強制するものは何もありません。他の言語で優れたコードを記述する方法を既に知っている場合は、まったく同じ原則と実践を Perl に適用できます。他の言語と同じように、単に規律の問題です。
上記の情報源とは別に、Mark Jason Dominus 著の「Higher-Order Perl」という本を強くお勧めします。余裕がある場合は購入してください。そうでない場合は、無料のビールであるFree Higher Order Perlのように、著者が彼の Web サイトに無料で本を掲載しています。PDF版の場合:直接ダウンロードURL(1.9MB)。
編集:
Perl のデザイン パターンについて言及するのを忘れていました。PerlDesignPatternsサイトは、Perl の設計パターンを学習するための非常に優れたリソースまたはリファレンスです。
すでに基本を学んでおり、プログラム構造を改善したいと考えている場合は、次の本をお勧めします。おそらく、この順序で読むのが最適です。
Intermediate Perl -- これはおそらく、あなたが求めていることの出発点です。Perl モジュール (適切な構造に不可欠)、リファレンス、複雑なデータ構造、OO などの開発と使用について説明します。
Perl Medic: Transforming Legacy Code -- 構造が不十分な Perl を修正する方法を示すことで、適切に構造化された Perl を示します。
効果的な Perl プログラミング: Perl でより良いプログラムを書く-- 古典的ですが、それでも有用です。Perl っぽい Perl を書くのに役立つ Perl イディオムがいっぱいです。オブジェクト指向についてはあまり触れませんが、より基本的なコーディング構造をカバーして、コードをより簡潔にし、さらに表現力豊かにします。これは、私が Perl のリテラシーから Perl を流暢に話せるようになった本だと思います。
基本的な Perl 構文に慣れたら、3 つすべてが最適ですが、まだ Perl を使い始めていても他の言語でのプログラミング経験が十分にある場合は、理解できない難解で高度な概念に踏み込むことはありません。
個人的には、Java を学び始めるまでは、良い OO Perl を書きませんでした。真の OO 言語で OO を少し時間をかけて学び、学んだことを Perl に適用することをお勧めします。
指導を受ける場所として、PerlMonksは素晴らしいです。
C を書くのと同じように Perl を書きますが、BEGIN ブロックとモジュールのいくつかを利用する必要があります。古いスタイルの K&R C コードのように見えるようにフォーマットする必要があります。
構造に関しては、オブジェクト指向のものをスキップして、代わりに ADT としてスタイルします。
http://en.wikipedia.org/wiki/Abstract_data_type
基本的に、オブジェクト指向でオブジェクトを使用していたデータ構造を使用してこれを行います (そして、アルゴリズムを独自の関数に分離します)。
次に、物事を行う方法を 1 つだけ選び、それに固執します。読みやすさには一貫性が不可欠です。
それができれば、コードは読みやすく理解しやすいものになります。
ポール。