コード、スクリプトの書き方で悩んでいます。
具体的には、
ユーザー関数内への、変数の渡し方です。
・変数でユーザー関数に引き渡すか、
・定数にして、読み出すか、
・いっその事、グローバル変数にするか。
私は、よくミスをする人間と自覚しているので、
グローバル変数を使わない書き方にしているんですが。
(未定義のグローバル変数は、やはり危険だと思う。
けど、作成環境では未定義の変数は、意図的に
Notice: Undefined variableの注意を出して、つぶす
ようにしてるから、未定義はあり得ないし。^^;)
定数は便利なんですが、スクリプト中に$のない変数
があるのが違和感があるし、定数を使ってもそのまま
定数名が現れてしまう場合もあるので、$teisu = TEISU;
としないといけないのが、かっこわるいかなー、と。
(明示的に定数を表示する方法もあるのかな?)
引き渡す方法も、ユーザー関数内から、ユーザー関数を
呼び出すと、引数のはしごになってしまうし、()内に
4、5個もあると、かっこわるいかなー、と。^^;;;
まとめられる物は、まとめているんですが、。
(組み立て方も、悪いんだと思いますが。)
この辺の臨機応変な使い方が、よく分からなくって。^^;
意見は分かれると思いますが、綺麗なコーディングって、
どんなものですか?
実際にPHPの掲示板等で、これは綺麗だよ。
または、綺麗なコーディングをするための、初心者に
毛が生えた程度の、わかりやすいHPもありましたら
教えてください。
私なりのかっこよさは、
グローバル変数は使わない。
ユーザー関数の引き渡しは、少ない。
未定義の変数は、使わない。
なんですが、探してもグローバルを多様しているものや
未定義の変数の注意がたくさん出るものばかりで。
それとも、私なりのかっこよさは、ずれているんでしょうか?
長くなりましたが、お願いします。
No.1ベストアンサー
- 回答日時:
なぜ関数を使うのか、と言うことを考えていくとおのずと答えが出るかも。
まぁ、コーディング規約なんて「自分だけ」で閉じている環境であれば(他の人が見たり修正したりしない)、多分に好みの問題になりますが。関数をうまく使えば、その関数で実現できる機能を汎用化することができます。ある場所で使った関数を、別の場所でも使えるようになる、と言うことですよね。
こうすることによって効率良く再利用可能なコーディングができますし、かつメンテナンス性も向上します。
ただ、関数内でグローバル変数を使うと、その関数はそのグローバル変数に依存してしまうことになります。その関数が、作成するスクリプトにべったりな関数なら問題ないですが、もしその関数を別のスクリプトから呼び出したいとなると、わざわざ関数の中身を確認して、同じグローバル変数を作らなければならないことになってしまいます。グローバル変数は便利ですが、あまり使い過ぎると関数の汎用性を無くしてしまうことになるのです。逆に、関数内にローカル変数しか使っていない場合、その関数の中身を知らなくても、機能と引数の数(とその意味)さえ分かっていれば使えることになります。
ということで、個人的には
・スクリプト固有の関数 --> グローバル変数の使用を可とする
・再利用したい末端関数 --> スーパーグローバル以外のグローバル変数は絶対に使わない
・スクリプトの最初から最後まで値が変わらないものは定数に。(たとえばウェブページに表示する管理者メールアドレスとか、データベースのURLとか)。
としています。
ご自分でいろんなスクリプトで使いまわせる便利なライブラリファイルを作ってみると、引数とグローバル変数の使い分けをどうすればいいのかわかってくると思いますよ。
この回答への補足
回答に対しての補足ではありませんが、
個々を参考にさせてもらっています。
小規模PHP製作所
http://www.kenjiweb.com/
とても参考になりました。
ライブラリは作った事がありませんでした。
個々があまり共通性がない事、コードが短い事、外部に
作ると忘れてしまう事、常習的にコピー&ペイストで
済ます事。^^;
確かに外部に作った方がメンテナンス性が上がりますね。でも、外部ファイルは、読み込む際に負荷が大きいと、
よけいな心配をしていました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) Excel のユーザー定義関数でソルバーが動作しない 1 2022/09/05 19:51
- その他(プログラミング・Web制作) pythonのグローバル変数 2 2022/11/25 18:02
- C言語・C++・C# C言語初心者 ポインタについて、お助けください、、 2 2023/03/15 23:50
- Excel(エクセル) 条件付き書式を使ってユーザー定義。「数字のみ」も「数字+アルファベット」も認識させたい。 2 2022/05/28 07:22
- 数学 モデルのパラメータの定義がいまいちわかりません。 3 2022/10/11 15:16
- 数学 ヒストスプライン平滑化をする際の節点の決め方ついて教えてください。 9 2022/08/08 16:17
- Excel(エクセル) Excelの関数について教えてください。 5 2023/07/28 11:27
- C言語・C++・C# C言語初心者です、、、お助けください 2 2023/03/14 20:08
- その他(OS) Windowsで大量の画像サイズを半自動で変更する方法 6 2023/02/17 08:45
- Ruby 初心者プログラミング 3 2022/10/12 11:31
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ステップカウンタ(PHP)
-
3つ以上の論理積は利用可能なの...
-
フォントの色を変えるには?
-
PHPのWARNINGをcatchするには
-
onedrive にexcelファイルをア...
-
PHP8を使うと、大量のWarningが...
-
バッチを用いたフォルダの自動移動
-
CSV出力にHTMLが入ってしまう
-
「クラス関数」「メンバ関数」...
-
index.phpって何ですか? 具体...
-
現在位置より2つ上のディレク...
-
透過PNGが透過されない!!
-
PHP 文字列を代入した配列を変...
-
PHPのif文でその処理を途中で抜...
-
$_SESSION 有効期限をブラウザ...
-
別ファイルの変数を呼び出した...
-
PHPで、エラーがない場合のみ画...
-
index.phpに入るには、どうすれ...
-
前後の全角スペースを削除する...
-
phpとaspの違いについて
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
3つ以上の論理積は利用可能なの...
-
ステップカウンタ(PHP)
-
$_SERVER と $_ENV の違い
-
empty($_SERVER['REQUEST_U
-
FPDFについて
-
phpにて、ipアドレスによる処理...
-
ロリポップでPHPのアクセス解析...
-
コメント削除のPHPスクリプトの...
-
PHP5(データベースは使わない...
-
ログイン中のユーザがオンライ...
-
動的にラジオボタンを増やす方法
-
alert を カウントする。(Jav...
-
PHPスクリプトにプロキシを弾か...
-
円グラフ描画について
-
簡単な心理テストを作りたい
-
スクリプト終了時に呼び出す関...
-
WEBアプリのXSS攻撃について
-
ランキングサイト構築
-
PHPのif文でその処理を途中で抜...
-
onedrive にexcelファイルをア...
おすすめ情報