• ベストアンサー

関数化して楽したいですが・・・

http://oshiete1.goo.ne.jp/qa2419133.html で,わたしの質問に対して#2さんにいただいた回答を ほぼそのまま活用しています. 「もっとわかりやすく関数化したりしてください」とありますが, たとえば,#2さんが示されたどの部分が関数化できますか. 共通処理部分を function func_name() みたいに定義するらしいことくらいしかわかりません. 関数化により,後々のコーディングで楽できることはわかるのですが 具体的な発想がないため着眼できません (教わりさえすればいつも,おおそうか!と目からウロコなんですけど)

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

  • ベストアンサー
  • ngsvx
  • ベストアンサー率49% (157/315)
回答No.1

関数化するということには、 「共通の処理を1カ所で行うことでバグを減らす」 ことの他に、 「要点をまとめ、プログラムをすっきりさせる」 という使い方もあります。 長い話をずらずらとされるより、まずは要点を聞き細かいことは後で聞くという方がわかりやすいと思いませんか? 例にあげたコードでは、 ・前半部分はエラーのチェック ・後半はエラー画面表示 となっています。 ですから、そのまま $emsg = checkError($_POST); if($emsg != null){ dispError($emsg, $_POST); } というようにすることが考えられます。 checkError dispError が関数化したものです。 どの箇所を関数にするかは、センスや経験などの要素が大きいので、全ての人が同じような関数にするとは限りません。

litton101
質問者

お礼

ngsvxさん,御礼が大変遅くなって失礼しました. > 「共通の処理を1カ所で行うことでバグを減らす」 > 「要点をまとめ、プログラムをすっきりさせる」 どっちも喉から手が出るほど欲しい&習得したいテクです・・ > 例にあげたコードでは、 : > というようにすることが考えられます。 なるほど・・なかなかおくが深いですね. 記述方法(文法)も初めてみたものなので,思わず調べてしまいました・・ > どの箇所を関数にするかは、センスや経験などの要素が大きいので、 > 全ての人が同じような関数にするとは限りません。 なかなか実務で開発に従事しないと,独学では難しいですかね. 努力次第なことは承知してるのですが, 質問から得られるご回答だと,目からうろこばっかりです. アドバイスありがとうございました.

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • 関数内のクラス定義について

    function func_name() { --- snip --- class class_name { --- snip --- } --- snip --- } のように関数内でクラスを定義した例を見たのですが、関数外でクラスを定義した場合とどこが違うのでしょうか? またどのような意味があるのでしょうか? PHPでは関数内に子関数を定義すると子関数もグローバルになって二重定義エラーになるためこのようなことは出来ないと認識しているのですが、関数内でのクラス定義でこのようなことは起こりませんか。 またclass class_nameはグローバルなスコープを持たないのでしょうか?よろしくお願いします。

    • 締切済み
    • PHP
  • phpコールバック関数について

    php初心者のものですが、コールバック関数(可変関数)についての質問です。 //引数の与えらえられた名前をもつ関数が存在すれば呼び出すための関数 function func_caller($name)(2) { if (function_exists($name)) { (3) $name(); //可変換数をして関数の呼び出し } } function foo() { echo 'foo call', PHP_EOL; } func_caller('foo'); //foo called(1) とあるのですが (1)の関数が(2)に呼ばれて$nameはfooが入ってて (3)が評価されまでわかるのですが次にどうなっていくのかわかりません。 どなたかわかる方いらっしゃいましたらどうか教えていただけないでしょうか? 何卒よろしくお願い致します。

    • ベストアンサー
    • PHP
  • PHPで定義されている関数のコードが見たい

    PHPでコードを記述するとき、関数を定義することがあります。 function test($name){ : : } しかし、最初から定義されている関数がありますよね。 isset()やfile_get_contents()などの関数です。 こういった関数の中身をみたいのですが、PHPのどの部分を見ればいいのでしょうか。 関数の中身とは、たとえばfile_get_contentsなら function file_get_contents($name){ : //この部分のことです。 : } PEARだったら、たとえばDB.phpならばDB,phpの中身を見ればいいのですが、fopen()などの最初から定義されている関数はどこを見れいいのかがわかりません。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • onClickで関数呼出し後に、結果に応じてsubmitを実行する方法

    JavaScriptで、 function func() {  if (a==0) {   alert("処理しない");   return false;  }  return true; } と、a=0ならfalseを返し、それ以外ならtrueを返す関数を定義しています。 そして、FORMタグで <FORM NAME="FormName" ACTION="next.html"> <INPUT TYPE="button" VALUE="next" NAME="button1" onClick="return func();submit();"> </FORM> と記述しています。 要は、ボタンを押下した際にfunc関数がtrueを返せば、next.htmlに 遷移させたいのですが、上記記述では、遷移しません・・・ onClick部分にonClick="return func(),submit();"と記述した場合、 func関数の実行結果がtrueでもfalseでも遷移してしまいます。 そこで、なんとなくonClick="return func()&&submit();"と記述してみたところ、 func関数がtrueの時のみうまく遷移するようになりました。 これは偶然そう動作しているのでしょうか、それとも上記は正しい記述方法なのでしょうか? 正しい記述方法ならいいのですが、上記以外に正式な記述方法があれば 教えていただけないでしょうか? ※TYPE="submit"にすればいいとは思うのですが、buttonで実現したいと 考えております。

  • [JS] private関数からオブジェクト参照

    JavaScriptにて外部から使用する関数をpublicに、内部的に使用するだけの関数をprivateにしたく、 <http://d.hatena.ne.jp/brazil/20051028/1130468761>や<http://www.findxfine.com/programming/javascript/59.html>を参考に以下のようにしてみました。 func1はtestクラス内からしか呼び出せず、privateになっており、 func2はtestクラス外からも呼び出せて、publicになっているようです。 しかし、func2からfunc1を呼び出した際に、func2の呼び出しもとのオブジェクトを参照しようとすると undefinedになってしまいます。 var a = new test(); //a.func1(); // これはprivateなのでエラー a.func2(); // こちらはpublicなのでOK function test(){ var self = this; // private variable var data1 = 1; // public variable this.data2 = 2; // private function function func1(){ console.log(data1); // 1を表示 console.log(this.data2); // これがundefinedとなってしまう } // public function this.func2 = function(){ console.log(data1); // 1を表示 console.log(this.data2); // 2を表示 func1(); }; } どのようにすれば、オブジェクト変数を参照でき、 クラス内でのみ使用可能なprivate関数を定義できるのでしょうか。

  • 二つ以上の値を返す関数

    たとえば、a,bという値を関数に入れて、関数の中で変わったa,bを受け取るような方法はないでしょうか。 http://oshiete1.goo.ne.jp/kotaeru.php3?q=138798 の int main(void) { int a=1, b=2; func(&a, &b); printf("%d, %d\n", a, b); return 0; } void func(int *x, int *y) { *x++; *y++; } を実行してみましたが、 「関数 'func' は定義されていません。int 型の値を返す外部関数と見なします。」 と出てきました。 助言をよろしくお願いします。

  • EXCELでユーザー定義関数を使用するには

    EXCELでユーザー定義関数を使用するにはどうしたらいいのでしょう。 functionを定義して、ワークシートで使用しても、#NAMEエラーが出てしまいます。

  • ユーザ定義関数の引数にクラスのインスタンスを渡すことは可能?

    いつもお世話になっております。 (PHP5.2.5) 質問: ユーザ定義関数の引数に、 「クラスのインスタンス」を渡すことは可能ですか? 例: <?php  //クラスをインスタンス化する。(例:PDOクラス)  $conn = new PDO($dsn,$user,$pass);  //ユーザ定義関数に上記のクラスのインスタンスを与えている  user_func($conn);  //ユーザ定義関数の定義部  function user_func($conn){   $sql = '~SQL文~';   $stmt = $conn->prepare($sql);   :   :処理   :  } ?> 関数に渡すことのできる引数の型について、 なかなか見つけられず、初歩的な質問をしてしまっているかもしれませんが、 どうぞ宜しくお願い致します。        

    • ベストアンサー
    • PHP
  • MATLABの関数で配列の要素を返す方法

    現在MATLABについて勉強しているのですが、関数(function)を用いて配列の値を返す方法が分からず困っています。 関数で定義した配列A(m行n列)を用いて、メイン関数で配列の要素Aijを呼び出す、ということがしたいのです。 function y=Func(x)等で1変数や他変数の入出力の仕方は分かります。 どなたか初心者でも理解できるようご教授お願い致します。

  • グローバル変数について

    関数の中で定義されたローカル変数(例えばfunction func(){$a=○○;}の $a)をグローバル変数にするにはどのようにしたらよいのでしょうか?

    • ベストアンサー
    • PHP
このQ&Aのポイント
  • 筆まめを使用していて、カードウィンドウが表示されなくなった問題について解決方法をご紹介します。
  • 操作方法を確認してカードウィンドウの表示を復元する方法について解説します。
  • ソースネクスト株式会社の筆まめでカードウィンドウが表示されない場合の対処法として、以下の手順を試してみてください。
回答を見る