• ベストアンサー

どういうプログラムを関数化をしたほうがいいのか しないほうがいいのか

noname#58606の回答

noname#58606
noname#58606
回答No.4

PHPでは、ある程度なんでも出来るけど、あまりロジックやアルゴリズムは自信が、猛烈にないのですが。^^; 関数ってほーっておくと、訳が分からなくなりますよ。w 私も、分からなくなった口です。 ◆関数はシンプルに、こまめに分ける。 ◆関数名を分かりやすく。 ◆関数の説明は分かりやすく。 すると、ある程度見通しがよくなりますよ。 あとは、グループで開発する場合は、ローカルルールを把握するのが、ポイントです。 それと、一つスクリプトを作った後、紙にプリントアウトして見直すと、「あー、ここは変だ。」ってのが、分かりますよ。 それを元に、もう一度同じスクリプトを作ると、ちょっとだけ効率的なスクリプトが、出来ます。 それの繰り返しが、上達のコツだと、思いますよ。 あとは、感謝と根性ですかねー。w

yuzuru0024
質問者

お礼

回答ありがとうございます。 >関数の説明は分かりやすく。 関数に必ず 処理内容の説明 引数の説明 を入れたら大変分かりやすくなりました。

関連するQ&A

  • 良いプログラムを書くためには

    今回、プログラミングの上達方法に関してアドバイス頂きたく質問しました。 現在、ソフトウェア開発の仕事に就いていてCやJavaなどでプログラムを書いたりしています。主にCで書くことが多いです。与えられた課題に対して動くプログラムは作れるのですが、先輩などからプログラムが汚いとよく指摘されます。 指摘される事柄は色々ありますが、何点か挙げるとまずモジュール分割が上手く出来ていない。1000行位の動くプログラムを書き始められた頃は、共通の処理などの関数が分割されておらず、同じ処理がやたら多いなど、余計な処理が多くコードに無駄が多いと指摘されました。それを改善したところ、今度は無駄に関数の分割が多くなり、読みにくいなどの指摘を受けました。 その他にも、例えば関数の中で、for(条件式)の条件式を上手く工夫すれば、for()の中で、余計な条件分岐などが減るなどの、細かい記述に関しても指摘を受けます。 質問はプログラムを作成する上で、大きな観点からだと、どのようにすれば綺麗にモジュール化などが出来るのか、モジュール化だけではなく、ソフトウェアの設計全般に関してです。また細かいことで、いえば先ほどのfor()の様に、文法を上手く使いこなすためにはどうすればよいか。本などのサンプルコードでは、forならfor、ifならifの説明など、主に単独の説明が多いように思えます。関数の中で、各文法同士を上手く使いこなし、他人が見ても読みやすいコードなどを書きたいです。 先輩からは、他人のソースコードを見ることなどと言われますが、何か他人のソースコードを見る上でも、上で挙げた指摘を改善するための見方とか、他にも自分でプログラムを作る場合に、こういう事に注意しながら作るといいなど何か改善するアドバイスがあれば宜しくお願いします。また参考になる書籍やサイトなどもあったら教えて頂くと助かります。 長くなりましたが宜しくお願いします。

  • プログラムで関数は使わない方が速くなる?

    大きなプログラムを書く際、プログラムの見通しが良くなり、後から修正しやすくするため、 同じ計算が複数回出る際には関数を多用したものを作成してきました。 ところが、プログラムの計算速度を上げたいと思い、計算時間を比較してみたところ、 関数を使わない方が圧倒的に速くなることが分かりました。 Matlabを使って、 for j = 1:100000 for i = 1:1000 y = i*i * j *j; end end の計算を行った際の計算時間と、ループ内の計算を関数で置き換えた for j = 1:100000 for i = 1:1000 y = zikan_sokutei_function ( i, j ); end end function [ kei ] = zikan_sokutei_function ( i, j ) kei = i * i * j * j; end の計算を行った時間は、 それぞれ、0.5秒と1分7.3秒、という結果になりました。 つまり関数で置き換えたことで、計算時間が実に135倍も増大したということです。 上記と同じプログラムを使ってVBAで比較したところ、 それぞれ、8.29秒と20.70秒、という結果になりました。 つまり関数で置き換えたことで、計算時間が2.5倍も増大したということです。 また、関数を使わない場合には、Matlabが最速で、関数を使う場合にはVBAが最速であるという結果になっています。 これは関数を全く使わない方が、圧倒的に高速に計算を実行できるという結果になっていますが、 こういうものなのでしょうか? 2倍程度なら許容範囲ですが、100倍以上も遅くなるのであれば、 関数は全く使うべきではない、ということになりますが、なぜこれほどまでに時間がかかるのでしょうか? Matlabの方がVBAよりも数値計算に適しているため、VBAよりも実行速度は速くなるべきだと思いますが 関数を使った場合には、これが逆転してしまうという、かなり腑に落ちない結果となりましたが、 こういうものなのでしょうか?

  • Perlコードを、自動的にPHPコードに変換してくれるプログラム!

    Perlコードを、自動的にPHPコードに変換してくれる、そんな「ドラえもん」のようなプログラムがありましたら教えて下さい! もちろん、変換後のコードが完全なPHPコードでなくても、大体、関数とか、変数、その他の定型ルーチンの違いを置き換えてくれる程度のもので結構です。 その他、何か、そういったPerlからPHPへの乗り換え支援ツール見たいなものがあったら教えて下さい。

    • 締切済み
    • PHP
  • fsockopen関数について

    PHPでPOSTを送ろうと思ったのですがfsockopen関数の使い方が分かりません。 以下の例のソースコードを書いてくれませんか? 例 http://www.sample.com/post.phpの$_POST['name']にtestを送る

    • 締切済み
    • PHP
  • PHPの関数の動き方が分かりません。

    PHPの関数の動き方が分かりません。 Wordpressというブログシステムを使っていますが、 問題が発生しております。 (メニューが2重表示される,関数の2重呼び出しはないことを確認しています。) http://okwave.jp/qa/q5988841.html 関数その物、もしくはデータベースの不具合を疑っておりますが、 以下の関数のPHPコードの読み方が分かりません。(プログラム自体は経験あるので、読み方が分かれば障害がどこか、ある程度判別できると思います。) function get_constructor_menu($before = '', $after = '') { global $main; $main->getMenu($before, $after); } ご存じの方教えていただけませんでしょうか?

    • 締切済み
    • CSS
  • OSSemPendという関数とは?

    いま見ているC言語ソースコードに”OSSemPend”という関数があったのですが、ソースコードでどのように使われているかよくわかりません。この関数にはどのような機能があるのかご存じの方いらっしゃいませんでしょうか。

  • CGIプログラム

    以下の問題について教えてください。 お願いします。 PHPに限らず、CGIプログラムで変数の内容を使ったHTMLコードを生成する場合に、単純にHTMLコードを出力しただけでは、正しいHTMLコードにならなかったり、CGIプログラムが動かないことがある。その場合には、どのようにしてその問題を回避するか。

  • exec()で他ディレクトリのexeプログラムを実行したい

    url2bmpという、指定したURLのスクリーンショットを作成できるコマンドライン対応のソフトを使用しています。これをPHPから実行させたく、exec()関数を使っています。PHPプログラムとexeプログラムは同じ階層にあり、コードは exec("url2bmp.exe 以下、引数"); のようにしており、問題なく動作していました。 その後、url2bmp.exeを1階層下のフォルダに移し、コードも修正したのですが、動かなくなってしまいました。コードは以下の通りで exec("kasou/url2bmp.exe 以下、引数"); ディレクトリ指定は間違っていないはずであり、原因は明らかにurl2bmp.exeがPHPプログラムと同じディレクトリにないことなのですが、これの対処法は存在しないのでしょうか?同じコードをコマンドプロンプトで実行するとうまくいくのに、exec()関数では動かないという点に納得がいきません。

    • ベストアンサー
    • PHP
  • Webから得るJAVAプログラム

    わたしの入手した「JAVAプログラング技法」(堀内泰輔訳)に、「逆アセンブラ(javap)は、ソースコードが入手できないコンパイル済みのJavaプログラム(例えば読者がWebから得るJavaプログラム)を、元のソースコードに戻すための手ごろなツールです。」(24頁)と説明されています。WebからJavaプログラム(のバイトコード)を得る方法を教えて戴けないでしょうか。

  • CGIプログラム

    PHPに限らず、CGIプログラムで変数の内容を使ったHTMLコードを生成する場合に、単純にHTMLコードを出力しただけでは、正しいHTMLコードにならなかったり、CGIプログラムが動かないことがある。その場合には、どのようにしてその問題を回避するか。

    • ベストアンサー
    • CGI