プロが教える店舗&オフィスのセキュリティ対策術

コード、スクリプトの書き方で悩んでいます。
具体的には、
ユーザー関数内への、変数の渡し方です。

・変数でユーザー関数に引き渡すか、
・定数にして、読み出すか、
・いっその事、グローバル変数にするか。

私は、よくミスをする人間と自覚しているので、
グローバル変数を使わない書き方にしているんですが。
(未定義のグローバル変数は、やはり危険だと思う。
けど、作成環境では未定義の変数は、意図的に
Notice: Undefined variableの注意を出して、つぶす
ようにしてるから、未定義はあり得ないし。^^;)

定数は便利なんですが、スクリプト中に$のない変数
があるのが違和感があるし、定数を使ってもそのまま
定数名が現れてしまう場合もあるので、$teisu = TEISU;
としないといけないのが、かっこわるいかなー、と。
(明示的に定数を表示する方法もあるのかな?)

引き渡す方法も、ユーザー関数内から、ユーザー関数を
呼び出すと、引数のはしごになってしまうし、()内に
4、5個もあると、かっこわるいかなー、と。^^;;;
まとめられる物は、まとめているんですが、。
(組み立て方も、悪いんだと思いますが。)

この辺の臨機応変な使い方が、よく分からなくって。^^;

意見は分かれると思いますが、綺麗なコーディングって、
どんなものですか?
実際にPHPの掲示板等で、これは綺麗だよ。
または、綺麗なコーディングをするための、初心者に
毛が生えた程度の、わかりやすいHPもありましたら
教えてください。

私なりのかっこよさは、
グローバル変数は使わない。
ユーザー関数の引き渡しは、少ない。
未定義の変数は、使わない。

なんですが、探してもグローバルを多様しているものや
未定義の変数の注意がたくさん出るものばかりで。
それとも、私なりのかっこよさは、ずれているんでしょうか?
長くなりましたが、お願いします。

A 回答 (1件)

なぜ関数を使うのか、と言うことを考えていくとおのずと答えが出るかも。

まぁ、コーディング規約なんて「自分だけ」で閉じている環境であれば(他の人が見たり修正したりしない)、多分に好みの問題になりますが。

関数をうまく使えば、その関数で実現できる機能を汎用化することができます。ある場所で使った関数を、別の場所でも使えるようになる、と言うことですよね。
こうすることによって効率良く再利用可能なコーディングができますし、かつメンテナンス性も向上します。

ただ、関数内でグローバル変数を使うと、その関数はそのグローバル変数に依存してしまうことになります。その関数が、作成するスクリプトにべったりな関数なら問題ないですが、もしその関数を別のスクリプトから呼び出したいとなると、わざわざ関数の中身を確認して、同じグローバル変数を作らなければならないことになってしまいます。グローバル変数は便利ですが、あまり使い過ぎると関数の汎用性を無くしてしまうことになるのです。逆に、関数内にローカル変数しか使っていない場合、その関数の中身を知らなくても、機能と引数の数(とその意味)さえ分かっていれば使えることになります。

ということで、個人的には
・スクリプト固有の関数 --> グローバル変数の使用を可とする
・再利用したい末端関数 --> スーパーグローバル以外のグローバル変数は絶対に使わない
・スクリプトの最初から最後まで値が変わらないものは定数に。(たとえばウェブページに表示する管理者メールアドレスとか、データベースのURLとか)。
としています。

ご自分でいろんなスクリプトで使いまわせる便利なライブラリファイルを作ってみると、引数とグローバル変数の使い分けをどうすればいいのかわかってくると思いますよ。

この回答への補足

回答に対しての補足ではありませんが、
個々を参考にさせてもらっています。
小規模PHP製作所
http://www.kenjiweb.com/

補足日時:2005/04/12 12:02
    • good
    • 0
この回答へのお礼

とても参考になりました。
ライブラリは作った事がありませんでした。
個々があまり共通性がない事、コードが短い事、外部に
作ると忘れてしまう事、常習的にコピー&ペイストで
済ます事。^^;

確かに外部に作った方がメンテナンス性が上がりますね。でも、外部ファイルは、読み込む際に負荷が大きいと、
よけいな心配をしていました。

お礼日時:2005/04/12 12:02

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!