• ベストアンサー

プログラムの再利用性について。

プログラムはPerl,PHP,VBの初心者を抜けたくらいです。 一通り自作はできるけど、辞書片手、ネットで調べ調べのレベルです。 プログラムでモジュールやコードを再利用すること視野に入れて開発する事が有能とされていますが、一般レベルでは意識する必要があるのでしょうか? 一般ではHPにアップロードするのは一つな訳だし、個人のHPではモジュールの開発まではしないし、サブルーチンで十分。 ましてや、モジュールをアップする事も少ないですし。 例えば、書き込み処理を外部ファイル化して、掲示板と日記とかから利用するのは問題があると思うのですが。 例え同じ内容でも掲示板と日記それぞれで書き込み処理するファイルを作成した方がいいと思うのですが。 あ、一つの方がサーバのアクションが減ってサーバ的には負荷が少ない?? というか、エラー処理やヘッダーやフッターは基本的にどのCGIでもあまり変わらないので、コピーして使ってますよね? これは再利用と言えるレベルではないですよね。 みんな当たり前のようにやってると思うし。 私は書き込み処理やエラー処理、タグチェックも、基本は同じですがその都度変えてます。 その方がそのスクリプトにあった処理ができるからです。 その代わり、仕様のコメントを丁寧に書いています。 メンテナンス面には面倒と思うけど、基本は同じなので、その部分を変えればいいだけだし。 皆さんは、どういうものを再利用を意識して書いてますか?

質問者が選んだベストアンサー

  • ベストアンサー
回答No.4

> 私は書き込み処理やエラー処理、タグチェックも、基本は同じですがその都度変えてます。 『すみません、その「書き込み処理」ですが、...... という組み合わせの文字が入力されると、システムがクラッシュするので、この文字列ははじくようにしてください。』 という連絡があったときに、「速やかに」「安全に」「すべてに」対応できるかどうかという問題だと思います。

noname#15164
質問者

お礼

そういわれると、確かにすぐに対処はできないかもしれませんね。 と、言った方がいいかもしれませんね。 っていうか、if文なり文字置換なりで、コピー&ペーストしていくだけですが。 。。。というか、そういう報告があったら、私は正常に動いているスクリプトも停止させて、一から見直すと思いますが。 でも、再利用というか、処理の統一が便利なのは、分かってきました。

その他の回答 (3)

  • terra5
  • ベストアンサー率34% (574/1662)
回答No.3

>メンテナンス面には面倒と思うけど、その部分を変えればいいだけだし。 そう思うか思わないかの違いがもっとも大きいと思います。 ある程度大きな物や継続的に使い修正していく物ならメンテナンス性を考えた方がトータルでははるかに楽ですから。 これは言葉では納得できないかも知れませんし、メンテナンスの手間を体験しても変わらない人もいますけど。 個人だろうが複数だろうが変わりません。 また、個人でも今の自分と過去の自分と未来の自分と・・で感覚的には複数のように感じますし。 確かに再利用を意識しないでもプログラムは書けますが、そういうのが一般レベルかどうかはなんとも言えないでしょう。 初級者ではそこまで気が回らないだろうし、実現も無理かなとは思いますし、体感的にもメリットを感じる機会もないようには思いますが。 プログラミングのレベルとしては低いとは思いますし、仕事の場合なら低レベルのプログラマと判断し、そういう対応をします。言語は関係ありません。 >「サーバのメモリーを気にかけている。」とか、「無理な負荷をかけないように努力している。」とかの方が個人のPerlユーザーのレベルが高いと思うけど。 レベルの高い人は再利用性もこういうことも含めて当然やってるでしょう。 まあ、保守性や再利用性は地味ですから、見栄え(?)はこういう方が良く見えるのかも知れませんけど。

noname#15164
質問者

お礼

コンスタントにものを作る側と、そうでない私の違いですかねー。 ふと、再利用性を重視すると、処理が遅くなったり、ややこしくなる事はないのでしょうか? 処理が簡単になるのは、すぐに想像できますが。

noname#12761
noname#12761
回答No.2

私は Perl はあまり使ってませんが「一般レベル」があいまいではないでしょうか。 「一般レベル」はどちらかと言うと コードの意味はほとんどわからず公開された コードをアップロードして利用している方がほとんどではないでしょうか。当然そのような人にとって「コードの再利用」は無縁ですしそれでいいと思います。 また数本のプログラムの作成ぐらいでは確かに無理に「コードの再利用」を意識する必要はないと思います。 実際私も Perl の場合ちょこっとしか利用してませんので再利用性は意識していません。 しかし、Perl に限らずそれなりの本数のプログラム作成をこなし常に機能的な向上を目指す場合、必然的にプログラムの再利用性は意識せざるを得なくなります。 Perl もそのような要求に応えるため Object 指向を取り入れ進化して行っています。 yakusoku さんがその必要性を感じていないと言う事はそういうレベルで Perl を利用していると言う事でそれはそれで構わないのではないかと思います。 しかし、私がよく利用する VB や C++ 等では、私自身の class ライブラリー がかなり蓄積されており、それなりの機能を実装したアプリの作成時間が大幅に短縮され手放せないものとなっています。 ある程度の数のプログラムの作成をこなしより高度な機能の実装をめざすなら「プログラムの再利用性」を意識するのは不可欠だと思います。

noname#15164
質問者

お礼

お礼に書いたアドレスによると、Rohypnolさんのいう一般レベルはレベル1みたいですねー。 一応、私はある程度自作できる人を一般=普通としてました。 カテゴリーが技術者向けのプログラムなので、その辺は想像してくれるかと。 (・・・嘘です、補足のし忘れです。^^;) 回答は、職業プログラマーでは再利用性は必要。 趣味のプログラマーでは、それほど必要ない。 という意見にまとまると思っていたので、予想通りと言えば予想通りです。 私も再利用できるサブルーチンを作成するようにしていますが、サブルーチンに合わせて本体のスクリプトを改造するという本末転倒な事に陥るよりは、そのスクリプトに合わせたサブルーチンを作った方がわかりやすいかと思うし。 では、サブルーチンをさらに細分化して、最小単位にすればいいとも思いますが、サブルーチンから、さらにサブルーチンをいくつも読み出すのも負荷につながると思うし。 PHPではグローバル変数をあまり使わないようにしているので、引数を考えるのも面倒だし。 まぁ、素人なんですが。^w^

  • OsieteG00
  • ベストアンサー率35% (777/2173)
回答No.1

再利用というか、分割・細分化するということは可読性の向上につながりますね。自分が作ったコードでも、数ヶ月するとすぐに忘れちゃいますから^^ 確かに、個人レベルでは部品の再利用ということは少なく、ワンオフでのハンドメイド的作成が多くなりますが、損はないと思いますよ。 部品化・独立化をしておくことで、一つのモジュールでの変更を他のモジュールへの変更点を少なくする、という意味があります。 単に部品化・再利用といっても、そのまま利用することもあれば改造して使用することもある。これもりっぱな再利用です。

noname#15164
質問者

お礼

読み返したら、質問が何を意図しているのか自分でも。^^; つたない質問を、理解しようとして頂きありがとうございます。 私は、ついこの前までCGIではサブルーチンをあまり使わないのが、俺なりでいいと思ってました。 一つはグローバル変数はあまり使いたくなかった事、もう一つは流れを意識したかったからです。 今は、サブルーチンをたくさん使っていますが、掲示板や日記、カウンター等の一般にあるものではない変わっているスクリプトを自作しているので、これを別のもので再利用するように作ろうとすると、再度頭を使わなければならず、効率も悪くなると思ったからです。 CGIは私のHPで私のためだけに作っているので、似たようなスクリプトを2個つ来る事はないから。 とはいえ、私も過去のスクリプトを見ても分からない時があるので、仕様や解説は丁寧に書いています。 疑問の発端が下記のアドレスでPerlのスキルレベル表があり、その中で再利用性が高レベルにあったからです。http://d.hatena.ne.jp/naoya/20050809/1123563794 理屈としてはわかるけど、これが個人のPerl作成者に当てはまるかどうかをお聞きしたかったのです。 私は表にはないけど、「サーバのメモリーを気にかけている。」とか、「無理な負荷をかけないように努力している。」とかの方が個人のPerlユーザーのレベルが高いと思うけど。 ちなみに私は、4.5くらいかなー? use strict も使ってるし、モジュールも使った事あるし。

関連するQ&A