- ベストアンサー
単なる関数の集まりかオブジェクト化どっちが優れていますか?
Perl5.6でCGIを作成しております。 単なるサブルーチンの集まりの関数と、オブジェクト(packageしたもの )で同じ機能の関数を呼び出した場合に、動作スピードや開発の柔軟性など いろいろ考えた場合に、 require か useのどちらにどのような長所があり優れて、どのような短所があるか 現在理解できていません。 皆様の様々なご意見をお聞かせ下さい。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
まず、requireとuseの違いは、コンパイル時に読み込まれるか実行時に読み込まれるかの違いですので、オブジェクトと単なるサブルーチンというくくりとは違います。 さて、オブジェクト化と関数の集合とどちらが有利かということですので、それぞれの特徴をあげてみます。 【オブジェクト化(OOP)】 ◎オブジェクト指向のメリットを享受できる →カプセル化 →継承 →多様性 ◎再利用性に優れている →オブジェクトの利用者が、楽をできることが多い ×コンパイル時のプロトタイプによる型チェックが使えない 【関数の集合体】 ◎速度は速い (が、ハードの性能が悪くない限りは数%程度しか変わらない) ◎シンプルな機能であれば、関数の方が簡単に実装できる ×引数が増え過ぎることがある ×パッケージ名が無い場合、名前空間の衝突の危険性がある (特に、mod_perlなど1プロセスで大量のファイルをコンパイルする環境下) 一長一短ですので、あるデータに対する処理の集合(例えば、会員オブジェクトに対する登録・退会・属性取得等)はオブジェクト指向の方がまとまりますし、単なるユーティリティ(単位変換や数式等)は関数で書いた方が楽に書けると思います。