@IT情報マネジメント会議室は、2009年4月15日に新システムに移行しました。
新たに書き込みを行う場合には、新しい会議室をご利用ください。
- PR -

なぜ「グローバル変数」を使っては、いけないのですか?

投稿者投稿内容
unibon
ぬし
会議室デビュー日: 2002/08/22
投稿数: 1532
お住まい・勤務地: 美人谷        良回答(20pt)
投稿日時: 2004-04-15 13:11
unibon です。こんにちわ。

広義には、グローバル(global)変数とは、ローカル(local)変数との対比で用いられる用語だと思います。ローカル変数とはすなわちスタック変数のことですが、だとすれば、定義的にはグローバル変数とはスタックを使わない変数ということでしょうか。
でも、ローカル変数しか使わないプログラムと言うのは普通はないはずです。
と、思いましたが、スタック(stack)以外にヒープ(heap)もありますね。でもヒープって変数ではなく領域ですよね。よく分からなくなりましたが、置き場所の問題というよりも、スコープの問題に行き着くのだろうと思います。
#以上、あまりまとまっていませんが。

スコープは狭いほうが良いです。広くて良い理由が見当たりません。

したがって、グローバル変数も使わないほうが良いです。
未記入
会議室デビュー日: 2004/04/15
投稿数: 1
投稿日時: 2004-04-15 13:19
余談レスですが。

引用:

るぱんさんの書き込み (2004-04-15 12:55) より:
引用:

# 結論が出ない議論で疲れないコツは結論を出そうとしないことでしょうか。


議論って、結論を出す必要って無いですよね。
合意を取ってどうするこうする・・・ではなく、
同じプロセスを踏んで出てくる物が違うのは一品物を作成する上では
避けて通れない問題ではないかと思います。



議論の「議」って、みんなで筋道立てて話し合ってなにかを決めることだと思っています。
そのためにコーディネーターとして議長がいると。
それがなかったら、論戦とか論争とか、水掛け論とかに終わるんではないでしょうか。
どう考えても続ける意味のない論争も、「議論」というかっこいい名前をつけてむりやりつづけている場合がありますよね。
るぱん
ぬし
会議室デビュー日: 2003/08/01
投稿数: 1370
投稿日時: 2004-04-15 15:35
るぱんです。

個人的な意見です。
個人的には議論は答えを出したいと思っています。
しかし、ケースによると考えています。

求める回答を最初から
全員がそれぞれの要求を8割以下に落として・・・と言う前提ならOKです。
全員で10割目指すと言うならNoです。

自分の出している要求が相手にとって厳しいなら下げればいいだけの話で、
相手が出している要求が自分にとって厳しいならば無理だと言えば良い訳です。

自分が条件下げても相手が折れない、もしくは自分が割に合わないと思うなら、
歩み寄らなければいいと思います。

お互いに歩み寄る姿勢が無い状態で始めるなら、
「考え方の基準・指標」だけを共有できればいいんじゃないですか?

答えを無理矢理ひねり出そうとするのは理解できますが、
前提条件で「必ず合意を取る」と言う意識が共有できて初めて意義のある議論
になるのではないかと思います。

一般論や意味論を持ち出すのは構いませんが、
どこまで汎用性が高いか、前提条件の高低が割に合うか、
グローバル変数と同じく「議論」の使い方次第じゃないですか?

水掛け論とか論戦、論争が不毛だと思うなら参加しなければ良いと思うんですよ。
でも、知識が無かった人には「啓蒙活動を行っている」になりますし。

自分にとって意味があると思えば突っ込めば良いと思いますし、
意味が無いと思えば引いて構えてれば良いのでは?

「議論を収束しにかからない。」このことに対する余談でしたが、
つまり、議論を収束させようと努力した形跡が見られない人に
言われると説得力ないですよね?

どう考えても・・・と言うのは回りの人の意見で、
本人は必要としてるんじゃないですか?

満足するまでさせてあげればいいんじゃないですか?

どうでしょう?
CHN
ぬし
会議室デビュー日: 2002/03/07
投稿数: 382
投稿日時: 2004-04-15 15:48
議論の結論ですが、この話はもうこの辺で良しとしましょう。
内容のずれを作った張本人として、みなさんにお詫びします。
特にスレ主の はにまるさん、申し訳ございません。

元の話にもどりましょう。

_________________
NAL-6295
ぬし
会議室デビュー日: 2003/01/26
投稿数: 966
お住まい・勤務地: 東京
投稿日時: 2004-04-15 16:19
NAL-6295です。

グローバル変数はスコープが広いから、あまり使いたくないです。
スコープが広いと、書き換え可能な範囲が広くなっちゃいますからね。
グローバル変数に限った事ではないのですが、その役割に必要な最低限のスコープ設定が良いと思います。(ユーザの権限設定もそうしますよね。なんでもかんでもAdministratorだったら大変だと・・・。)
その結果、グローバル変数のスコープが適切であれば、登場させればよいのです。

変な例えですが、
大根役者が出ずっぱりの映画は目も当てられないけれど、
大根役者がちょっとのシーンにしか出なければ、映画自体は見れるかな。

みたいな・・・。(わかりにくいかも・・・。)
七味唐辛子
ぬし
会議室デビュー日: 2001/12/25
投稿数: 660
投稿日時: 2004-04-15 16:23
引用:

はにまるさんの書き込み (2004-04-15 10:42) より:

では、教えてください。
なぜ「グローバル変数」を使っては、いけないのですか?




そんなことはないです。状況によりけりです。

はにまる
ぬし
会議室デビュー日: 2003/12/19
投稿数: 969
お住まい・勤務地: 誤字脱字の国
投稿日時: 2004-04-15 16:24
皆様貴重な意見をありがとうございます。
返答したいのですが...体調が崩れている、はにまるです。

交通整理をしないと行けないかなと思い、投稿文書を記述していましたが、
頭が回っていないのでマトメきれず、ちょっと萎えていました。
ふと見ると、CHNさんの投稿があり助かりました。
ありがとうございます。 m(_ _)m

知識を出す、他の人の意見で成長する、自分の意見を参考にして頂く。
知識を交わらせる事は、楽しい事だと思います。楽しくいきましょう!
m.ku
大ベテラン
会議室デビュー日: 2002/09/15
投稿数: 184
投稿日時: 2004-04-15 16:59
元に戻すということなので元に戻して、

> なぜ「グローバル変数」を使っては、いけないのですか?

個人的には「試しに全部グローバル変数で組んでみたら?」ですね。
ローカル変数禁止にして。
長いプログラムを書くにつれ、使い分けの必要性を実感できると思います。
その後で、グローバル変数について従来から言われていることを読めば
更に理解が深まると思います。

#ただし業務で試すのはご法度。これは勉強なんだから。

スキルアップ/キャリアアップ(JOB@IT)