グローバル変数を使おう

このエントリーをはてなブックマークに追加
1デフォルトの名無しさん
グローバル変数を使った方が楽だよ。きちんと管理できない
バカがいるから使うと面倒になるだけで。
2マルチ:2001/07/15(日) 14:59
助かる。
3デフォルトの名無しさん:2001/07/15(日) 15:07
メンバ変数をpublicにしてアクセスした方が楽だよ。きちんと管理できない
バカがいるから使うと面倒になるだけで。
4デフォルトの名無しさん:2001/07/15(日) 15:08
Javaだったら

class Var {
public static int a;
public static int b;
public static String s1;
public static String s2;
:
}

てな感じのクラスをつくってどっからでもアクセスできるようにすれば
OKですね♥(昔こういうコーディングしてた後輩をどついた記憶が…)
5デフォルトの名無しさん:2001/07/15(日) 15:10
この板で人が減っていくのも分かる気がする。。
6デフォルトの名無しさん:2001/07/15(日) 15:29
>>5
早めの夏厨が来てるだけだと思いたいね。
71:2001/07/15(日) 16:23
>>5
グローバル変数を使っちゃいけない理由は
管理できないバカがいるからでしょ。
それ以上の理由があるとは思えないけど。
8デフォルトの名無しさん:2001/07/15(日) 16:29
愚弄バル変数ばかりのソースを、ドキュメント無しで解析させられている。
シーケンス変数のみで制御していて、それがいろんな関数で書き換えられる。
何がなんだかわけわかんねー。
死にたい。
9デフォルトの名無しさん:2001/07/15(日) 16:30
>>7
あなたは確実にその馬鹿の中の一人だ
……と思われ。
10Java厨:2001/07/15(日) 16:49
>>4
ドキッ!
11デフォルトの名無しさん:2001/07/15(日) 16:52
>>1
プログラム組んだ事あるのか?
学校のレポート程度の長さのプログラムしか知らないのかな・・・。
12デフォルトの名無しさん:2001/07/15(日) 17:05
>>1
グローバルに頼ると、ソフトウエア業界では晒しに近いソースになるぞ…
新人君や使えネー上司が組みソースはグローバルばっか。

BASICライクCとかはヤメレ。
13デフォルトの名無しさん:2001/07/15(日) 17:08
Perlでuse strictを使う奴はドキュソ!!!!!
グローバル変数マンセーマンセーマンセーー!!!!
14デフォルトの名無しさん:2001/07/15(日) 17:13
ネタスレならプログラマ板行ってくれ。
http://mentai.2ch.net/prog/index2.html

本気なら天国でも逝ってくれ。
15格言:2001/07/15(日) 17:14
名前空間は有限です。
161:2001/07/15(日) 17:42
>>12
だからそれがバカなプログラマーのためだっていってるの。
別にグローバルオンリーにしろっていってるんじゃなくて、
メインのデータをグローバルにしておいた方がいいって。
いちいち引数にして関数に渡すのが無駄だっていってるの。
17デフォルトの名無しさん:2001/07/15(日) 17:57
オブジェクト志向はグローバル変数を使おう志向なわけよ。
クラスベースで組んでいるとメンバ変数(グローバル変数)は必須

グローバル変数を嫌う奴は一生手続き志向でmainから始めてろ。
18デフォルトの名無しさん:2001/07/15(日) 17:57
モジュール化もせんで良いようなトイプログラムでは全く問題
ないがな。

そもそもその程度の使い方は君以外のマトモなプログラマに
とっては常識だ。くだらないスレ立てやがって。
責任もって削除依頼出して来い。
19>1:2001/07/15(日) 18:06
例えばC言語なら、”global.c”というファイルを用意して
コメントに”DATA-DIVISION”と書くのが理想だNE!
勿論、関数は全てhoge(void)で、内部でグローバルをいぢるYO!
201:2001/07/15(日) 18:24
だってうちの会社グローバル禁止なんだもん
21デフォルトの名無しさん:2001/07/15(日) 18:57
static int value;
int *getGlovals(void)
{
return (value);
}
22デフォルトの名無しさん:2001/07/15(日) 18:58

static int value;
int *getGlovals(void)
{
return (&value);
}
23デフォルトの名無しさん:2001/07/15(日) 19:02
クラス変数=グローバル変数

>>1
ガンガン使われてますが?
24デフォルトの名無しさん:2001/07/15(日) 19:04
>>20
それはお気の毒に。。。
25デフォルトの名無しさん:2001/07/15(日) 20:12
今の世は、グローバルスタンダードなんだよ!
26デフォルトの名無しさん:2001/07/15(日) 20:39
#define private public
27kitaz:2001/07/15(日) 20:45
1さんのいうグローバル変数はクラスのメンバ変数のことじゃないとして...
1つなら存在してもいいと思う。
MFCやC++Builderが生成したフレームワークにある、アプリケーションクラス
のインスタンスがそれ。
そいつがいろんなものを持っていればよいわけで。
参照するときは長ったらしくならないように、
{
PExampleClass pExam = MyApp.GetExample();
int ex1 = pExam->GetEx1();
int ex2 = pExam->GetEx2();
...
}
というようにブロックの始めにポインタを用意すればいいし。

Cだったら1つstructを作ればよいのだろうか。

Javaならmain自体がクラスの内部にあるから、本当に1つも要らない。
てゆうか作れないのだが。

2ch初投稿なのでよくわからんYO!
281:2001/07/15(日) 21:05
C++のクラスのメンバ変数でもいっしょだと思うよ。
Get〜やSet〜を用意するならパブリックにしても
なにも変わらないと思うけど。間接的になってる気がするだけで
値を間違って変更するばかはわざわざGet〜を使って変更すると
思うけど。
29デフォルトの名無しさん:2001/07/15(日) 21:10
>>27
> MFCやC++Builderが生成したフレームワークにある、アプリケーションクラス
>のインスタンスがそれ。
MFC はしらないが、VCL の Application はグローバルじゃない。
Formsの名前空間内にあるぞ。
グローバルとパブリックを勘違いしてないか?
30デフォルトの名無しさん:2001/07/15(日) 21:42
>>28

> C++のクラスのメンバ変数でもいっしょだと思うよ。
> Get〜やSet〜を用意するならパブリックにしても
> なにも変わらないと思うけど。間接的になってる気がするだけで
> 値を間違って変更するばかはわざわざGet〜を使って変更すると
> 思うけど。

この辺が厨房的発想。
仕事でそれなりのプロジェクトを経験すれば解ることなのかもしれないけどね。

間接的であることが大事なのだよ。
31デフォルトの名無しさん:2001/07/15(日) 21:58
漏れは仕事でそうなったわけじゃないが、メンバ変数をパブリックにすることには
なんとなく嫌悪感を覚える。
32デフォルトの名無しさん:2001/07/15(日) 22:08
でかくなると非常に重要。
人間の一時の記憶力と把握力なんて、でかいプロジェクトに比べれば
屁みたいなもの。そうじゃなきゃコンピュータ使う必要も無い。
33デフォルトの名無しさん:2001/07/15(日) 22:20
楽がしたいなら一人で逝ってろ!>>1
34デフォルトの名無しさん:2001/07/15(日) 23:01
グローバルなのってだめなの?

明らかにシステムにひとつしかない状態用の変数とか
グローバルに切ってもいいと思うんだけど。

あと、ガーベージコレクションをさせたくなくて、
どんどん寿命をながくしてたらいつのまにか
グローバルがいっぱいってのもあったんだけど。
35デフォルトの名無しさん:2001/07/15(日) 23:10
>34
グローバルってただのクラス変数のことを言っているのか?
それともそれをpublicにすること?
361:2001/07/15(日) 23:12
>>32
大きさは関係ないと思うよ。
Set〜つかっても記憶力や把握力が必要なのはいっしょ。
そんなのだめな理由にはならないよ。
37デフォルトの名無しさん:2001/07/15(日) 23:17
>>34
インスタンス参照をどこかのリストにでも登録しとけ。
ばらばらのグローバルになんかするなよ。
38デフォルトの名無しさん:2001/07/15(日) 23:21
はいはい勝手にそう思ってプロジェクトを混乱のどん底に叩き落してくれ。
あんたと一緒に仕事する羽目にならないことを祈っとくよ
39デフォルトの名無しさん:2001/07/15(日) 23:22
1がどういうつもりでこのスレ立てたのか知らないが、
>いちいち引数にして関数に渡すのが無駄だっていってるの。
恐らく関数型言語のclosureや、pascalの内部定義の
様なスコープ規則があれば納得するんだろうね。
40デフォルトの名無しさん:2001/07/15(日) 23:23
グローバル変数にしなければ無駄な管理の必要さえないんだが。
そんなに無駄に管理に手間を掛けたいのかね。
41デフォルトの名無しさん:2001/07/15(日) 23:25
いちいち引数にしないと参照できないのがどれほど重要かわかってない
ドキュソな」だけだろ
42デフォルトの名無しさん:2001/07/15(日) 23:27
定数とか不変のテーブルならグローバルに置くけど。
43デフォルトの名無しさん:2001/07/15(日) 23:34
既存のプロジェクトで、すでにグローバル変数があちこちのソースに
ばらまかれているんだー。
44デフォルトの名無しさん:2001/07/15(日) 23:35
>>40>>41
超激しく同意
45デフォルトの名無しさん:2001/07/15(日) 23:38
なんでこんな話題で40レスも付いたのか不思議。
46デフォルトの名無しさん:2001/07/15(日) 23:45
>>43
それが糞に過ぎないことは、認識&同意してるんだよな?
ならば君はドキュじゃない。
理想をいえばリファクタリングの対象の筆頭だなそれは。

こんなスレあったのか。驚きだな。
あれだ。憂鬱本のグローバル変数への言及を読め。
けだし名文だぞ。

>>7
それを言ったら計算機言語は全部その
「ついてけない馬鹿」への救助活動(わら)の歴史だ。
ビットパターンをスイッチで入力していた時代に
戻りたいか?
つまり、より楽になる(そのくせ失うものは殆どない)方向に
いきたがるというだけだ。人類的に当然の話。

>>15
本気じゃないよな?(わら
有限であっても事実上使いきることは不可能だな。
内部的に識別可能個数はどうせ32bit個とかの
その環境での最大限の値になる(ので失うものは無い)し、
名称の識別性については字数かける8(わら)bitだから
名前空間の広さは天文学的。

>>17
おまえ憂鬱本読んだことないだろ。
グローバル変数とOOPの変数の
似ている点と違う点について、理解してるか?
つまり、スコープと寿命を混同するんじゃねーよ!っていうこと。

>>27
>1つなら存在してもいいと思う
それは言える。どっかにrootが必要だ、という場合は多いな。
47デフォルトの名無しさん:2001/07/15(日) 23:48
OOPといったらC++かjavaかくらいしか知らないヒトは
他の言語も見ような。

たとえばdelの「プロパティ」は、生メンバ変数のラッパになり、
しかもラップするときに公開性を変更できるから
かなり便利だぞ。内部処理的には生変数操作であっても
外部からはリードオンリーにする、とかもできるから。

C++(とそれを真似たjava)の公開性管理方法だけじゃ
結構片手落ちだろ。使いにくいよあれ。
4843:2001/07/15(日) 23:51
君らはいいね。グローバル変数禁止のような習慣をつくれて。
うちの社内ライブラリはグローバル変数の塊だよ。

うちの会社がゲーム系なせいか、ドキュソな設計でも言い逃れしやすい。
「メモリの断片化を避けるためnew禁止」とか
「ポインタ参照で連鎖の効率低下するからグローバルでないとダメ」とか。

ちくしょう
49デフォルトの名無しさん:2001/07/15(日) 23:54
>>45
一部のレスの真意を取り間違える自分を賢いと思っているチュウボばかりだからです。
50デフォルトの名無しさん:2001/07/15(日) 23:59
株式会社グローバル
51デフォルトの名無しさん:2001/07/15(日) 23:59
>>48
本屋でちらっと見かけただけ(しかもそのとき
メモ帳も持ち歩いてなかったので署名も失念)なんだが、
C++パフォーマンスチューニングなんたらかんたら
っていうような本が有るようだ。

時間無かったんで中身も読んでないが、
タイトルどおりに期待するならば、
きっと君を救ってくれる情報が少しは
書かれてる本なのだと思うぞ。

newは、制限したほうがいいのは確かだろうが、
全面禁止は不味いだろう。多態をいっさい使えない。
それじゃC++の意味なし。生Cにしとけって感じ。

ていうか、そこまで言う会社って、
やっぱり市販のなんかより遥かに高性能なコンパイラも
自分らで作るんでしょうか?
そこまでやらないとただの半可通のような気がする。
他人が作った挙動予想不能(厳密にはね)のコンパイラ
なんかを使ってちゃ、そこまで突き詰められないはずなのだが。

ちなみにその本の使い方だが、
職場の自分の机に、これ見よがしに置いておく(わら)のが
第一段な。あとは健闘を祈る。んじゃ。
52デフォルトの名無しさん:2001/07/16(月) 00:15
今、プログラマー板が熱い。
53デフォルトの名無しさん:2001/07/16(月) 00:38
私はGlobalクラスを作って、変数をstatic publicにしてます。

Global.i

ね!オブジェクト志向な感じでしょ?
54デフォルトの名無しさん:2001/07/16(月) 00:40
>>53
雑魚は去ね
55デフォルトの名無しさん:2001/07/16(月) 00:42
>オブジェクト志向

どうでもいいが、この誤字はわざとか?

まあ、あえてそう訳したいという
タイムスリップ(15年くらいか?)志願者は、
そこに1列に並べ。
15年だから厨房ならば丁度ものごころつく前まで戻れるぞ。脳が。
56デフォルトの名無しさん:2001/07/16(月) 00:42
グローバル変数が悪いのではない。
管理されていないグローバル変数が悪いのだ。
誰も彼も勝手に書き込んでしまい、管理者を立てないから混乱する。
グローバル変数にしておいて、その変更を誰かが管理しておけば、
変な混乱はしない。
というわけで、static変数やシングルトンなんかを使おう。
57デフォルトの名無しさん:2001/07/16(月) 00:45
だって引数で渡すのめんどくさーい。
hoge(int,int,int,int,int,int,int,int,int,int,int,int,int);
とかウザクない?
全部グローバルの方がいいよ!。速いしね。
58デフォルトの名無しさん:2001/07/16(月) 00:52
>>57
ネタだとおもうんだが・・・

1,そんなに引数を渡す必要があるのか? 設計がカスかも
2,必然性があるなら意味単位で構造体orオブジェクトにしよう
59デフォルトの名無しさん:2001/07/16(月) 01:03
>>58
Javaなんでクラスを増やすのが嫌なんです。
わらわらファイルや容量が増殖してオーバーヘッドがかかって
起動が遅くなって死ぬので・・・。
Cなら構造体にまとめられるんですけどね。
60デフォルトの名無しさん:2001/07/16(月) 01:13
>>1
1は大規模なプログラムを組んだ事が無いと思われ。ン千人規模のプログラムで
グローバルなんか使われたらこっちがたまらんわ。ボケが。
61デフォルトの名無しさん:2001/07/16(月) 02:09
>>59
Javaも結構DQNなんだね。
62デフォルトの名無しさん:2001/07/16(月) 02:12
>>61
ちがうよ
>>59がすっとろいの
63デフォルトの名無しさん:2001/07/16(月) 02:21
>>60
大規模ならば、レビューが入り、テストも入念に行われるから、
たとえグローバル変数つかいまくったとしても無問題。
事前に取っ払われるか、テストで問題が出るか、あるいは、完全に動作する。

>>61
Java厨=Del厨=DQN
64デフォルトの名無しさん:2001/07/16(月) 02:25
大規模ならば、レビューが入り、テストも入念に行われるから、
たとえフルアセンブラでかきまくったとしても無問題。
事前に取っ払われるか、テストで問題が出るか、あるいは、完全に動作する。

63=厨房=DQN
65デフォルトの名無しさん:2001/07/16(月) 02:29
クラスだけ渡されて使ってくれって仕事もありそうだが…
66デフォルトの名無しさん:2001/07/16(月) 02:31
64=復唱君=DQN

64みたいなDQNがプロジェクトに居たらイヤだな・・・
67デフォルトの名無しさん:2001/07/16(月) 02:39
66=63=未経験リアル厨房

66みたいのはDQNは社会に出てこないで欲しいな・・・
68デフォルトの名無しさん:2001/07/16(月) 02:44
64=67=口だけのなんちゃってエンジニア

67みたいのが来たら辞職勧告するか、仕事与えないね。
あ、すでにそうだったりして(藁)
69デフォルトの名無しさん:2001/07/16(月) 02:47
とんでもないグローバル変数列伝をお願いします
70デフォルトの名無しさん:2001/07/16(月) 03:12
63=67
シね。
71デフォルトの名無しさん:2001/07/16(月) 03:16
/* gurobal hensuu */
int hoge;
int x;
int hensuu;
int var;
72デフォルトの名無しさん:2001/07/16(月) 03:18
>>63-67 (69除く)

いろいろ混乱してる(w
7372:2001/07/16(月) 03:19
訂正
>>63-67 -> >>63-70

俺も混乱してる(w
74デフォルトの名無しさん:2001/07/16(月) 10:07
ローカル変数が良くないのは、
そもそもカプセル化の考え方が間違っているからだ。
switch文をやめて全部if〜thenで書こう。elseも使わない。
サブルーチンをやめて全部GOTO文にしよう。
サブルーチンとスイッチをやめて
パイプ構造だけでプログラムを書けば
上から下へすっきり読めて気分がいいぞ。
75デフォルトの名無しさん:2001/07/16(月) 10:21
>>74
ネタはsageろ
76デフォルトのやる気なし:2001/07/16(月) 10:30
私もグローバル変数の使用には賛成です。
保守性、可読性が下がって工期が延びれば、(DQNな)客からはお金をいっぱい
取れる(まともな客には見限られるけどW)し、何よりも、一般的に敬遠される
コーディングスタイルを貫く方が自分の独自性(自分にしかメンテできないこと
で、組織の中での自己の存在意義を高める)を主張できる。

ただし、自分は関わり合いになりたくないけど。

「自分(社)と利害関係のない他人(社)の人」が大逝変数を使いまくる分には
大賛成ということで・・・。(藁
77デフォルトの名無しさん:2001/07/16(月) 10:34
どうしてこの手の話題ってすぐに全面対決になるんだろうね?
しっかり管理してあれば、グローバル変数を使った方がすっきるする場合もあるし、
ドキュソにかかればどんな優れた仕組みでもバグの温床になる。
ある一点からしか物事を見られないというのは、プログラマやSEとしては
致命的だとゆうことがわからないのかい?(プ
78デフォルトの名無しさん:2001/07/16(月) 12:01
口頭での連絡を使った方が楽だよ。きちんと管理できない
バカがいるから使うと面倒になるだけで。

駅の掲示板を使った方が楽だよ。きちんと管理できない
バカがいるから使うと面倒になるだけで。

仕様書を書かずに直コーディングする方法を使った方が楽だよ。きちんと管理できない
バカがいるから使うと面倒になるだけで。

どんな作業も管理者IDを使った方が楽だよ。きちんと管理できない
バカがいるから使うと面倒になるだけで。
79デフォルトの名無しさん:2001/07/16(月) 12:10
*を使った方が楽だよ。きちんと管理できない
バカがいるから使うと面倒になるだけで。

というのは、頭の悪い発言を無理矢理正論化しようとする能無しがよく用いる方法。
80デフォルトの名無しさん:2001/07/16(月) 12:18
OSの環境変数ってグローバルですか?
81デフォルトの名無しさん:2001/07/16(月) 12:47
つか、グローバル変数を使うとカコワルイので却下。
gotoよりも必要性を感じない。
82デフォルトの名無しさん:2001/07/16(月) 12:49
どんなバカでも大丈夫になるように、世の中は進んでいくわけだけれども、
本当にそれで良いのかと考え込んでみたりもする。
831:2001/07/16(月) 13:23
能力を信頼できるプログラマーが集まったプロジェクトなら
グローバル変数使っても問題が起きないと思うけど、
その中に文法さえも怪しいのが入ると使うのが怖くなる。
結局は能力だけの問題だと思うんだけど。
84 :2001/07/16(月) 13:47
int x( int g ){
...
y( g );
}

int y( int g ){
...
z( g );
}

int z( int g ){
...
u( g );
}

みたいのがあると、グローバル変数使いたくなる。
85デフォルトの名無しさん:2001/07/16(月) 14:03
>>84
それで
int u( int g){
...
return u(g-1);
}

みたいになっていない保証があるなら…
86デフォルトの名無しさん:2001/07/16(月) 15:14
>能力を信頼できるプログラマーが集まったプロジェクトなら
>グローバル変数使っても問題が起きないと思うけど、
机上の空論
楽だからという理由でグローバル変数を使う人間が信頼できるわけがない
871:2001/07/16(月) 16:34
>>86
楽だから使おうってのが悪いことだと思えないけど。
OOPだって、楽を求めていると思うし。
88デフォルトの名無しさん:2001/07/16(月) 16:42
楽だけど危険。
89デフォルトの名無しさん:2001/07/16(月) 16:47
>>83
グローバルにする価値があるかきちんと判断できる人間だけが
集まったプロジェクトなら平気だと思う。が、普通はそんな
プロジェクトはないと思うので、やめた方が無難じゃない?
90デフォルトの名無しさん:2001/07/16(月) 16:51
>>87
>OOPだって、楽を求めていると思うし。
この時点で、>>1が何も理解していないドキュンだと言うことが判明しました。
91デフォルトのやる気なし:2001/07/16(月) 17:05
「楽」ということばに、
「過程を楽する」(≒手抜き)と、「結果で楽する」の2つの意味が
あるのではないかと思われます。

受験生が勉強しないのは前者の意味であり、猛勉強するのは後者の
意味です。(藁
92デフォルトの名無しさん:2001/07/16(月) 17:23
> グローバル変数を使った方が楽だよ。
理解している人には説明無用。理解していない人には説明不能。

根本から話が噛み合いません。
これ以外に言うべき言葉が見つかりません。
93デフォルトの名無しさん:2001/07/16(月) 17:44

          ┌┬┬┬┐
    ―――┴┴┴┴┴―――――、
   /.  ̄ ̄ ̄//. ̄ ̄| || ̄ ̄ ̄||| ̄ ||     __________
  /.    ∧// ∧ ∧| ||      |||   ||  /
 [/____(゚_//[ ].゚Д゚,,) ||___|||   || <  >>1を迎えに来ました
 ||_. *  _|_| ̄ ̄ ∪|.|.       |ヽ. _||  \__________
 lO|o―o|O゜.|二二 東|.|京 精神病院 ||
 | ∈口∋ ̄_l__l⌒l_|_____|_l⌒l_||
   ̄ ̄`ー' ̄   `ー'  `ー'   `ー'
94デフォルトの名無しさん:2001/07/16(月) 17:50
「楽」ということばに、
「過程を楽する」(≒手抜き)と、「結果で楽する」の2つの意味が
あるのではないかと思われます。

やたらグローバス変数を使うのは前者の意味であり、一所懸命クラスライブラリを作るのは後者の
意味です。(藁
95デフォルトのやる気なし:2001/07/16(月) 17:52
>>94

フォローありがとうございます。(苦笑)
96デフォルトの名無しさん:2001/07/16(月) 18:30
そういや、ポインターの使用を禁止にしてるCの厨房プロジェクトがあったな。

この場合はグローバル必然的に増えるよーな…
97:2001/07/16(月) 20:14
>>96
それはグローバルを禁止して、やたらとポインタや
ポインタへのポインタが引数に並ぶのといっしょ。
別に全面的にグローバルにすべきってわけじゃない。
gotoもそうだけど、使うのは厨房って考えは間違ってるよ。
98デフォルトの名無しさん:2001/07/16(月) 20:19
>>97
全然違います。
99:2001/07/16(月) 20:21
>>98
具体的におねがいします。
100デフォルトの名無しさん:2001/07/16(月) 21:27
簡単なことだ。
グローバル変数の使用は許可制にすればいいんだよ。
101デフォルトの名無しさん:2001/07/16(月) 22:05
そして許可制にして管理すると、開発が遅れる
かと言っておのおのが楽だからと、勝手に作ると管理できない
結局全然楽じゃない
102デフォルトの名無しさん:2001/07/16(月) 22:06
>>1>>96を肯定してるのか。
103:2001/07/16(月) 22:38
>>96
してないよ。グローバル禁止もポインタ禁止もどっちも
ばからしいことだと思ってる。
でもどっちもだめなプログラマーに対する対策として
しかたなくやってることだろうから否定もできない。
104デフォルトの名無しさん:2001/07/16(月) 23:09
>>103
普通、先輩とかにコード見られて、
「直せ」って状況になるんじゃないの?
105デフォルトの名無しさん:2001/07/16(月) 23:20
グローバル変数が禁止されてるなら
シングルトンでごまかせば? >>1
106デフォルトの名無しさん:2001/07/16(月) 23:37
>>103
「グローバル変数を使った方が楽だよ」とか言っている
>だめなプログラマーに対する対策として
禁止するのは仕方がないだろう
107デフォルトの名無しさん:2001/07/16(月) 23:44
なんで開発方針みたいなDQN話をしてんだ?
グローバル変数の話をするスレじゃないのか?
108デフォルトの名無しさん:2001/07/17(火) 00:08
Cのソースで1000行から3000行越えたあたりから、
かーなり管理がウザクなってきて、10000行越えたら
もうヤって感じだな。

学生時代、簡単な実験装置を制御するプログラムを
同期と一緒にいぢった時の話。
グローバル変数じゃないんだけど、数千行に及ぶ関数の中で、
かーなり外側のループでiとかjがフツーの変数として使われてた。
知らずに
for(i=0;i<MAX_HOGE;i++){/*fugahoge*/}
とか追加した為に、エラくタノシイことに...(・∀・)
# いや、見た瞬間、書き直さないと逝けないとは思ったん
# だけど....メンドクさかったんだよぉ
109デフォルトの名無しさん:2001/07/17(火) 00:10
>gotoもそうだけど、使うのは厨房って考えは間違ってるよ。

単に「最後の武器」っていうだけのことだ。だから>>1
「グローバル変数を使った方が楽だよ」ってのは
あまりにも中途半端な言い方であって、正しくは
「グローバル変数を必要最小限使った方が楽だよ」
とすべきだな。

でもまぁ、(無理せずに)全く無くすることも不可能じゃないがな。
プログラムのデータ構造全体をCompositeパターン的にtree構造に
してしまい、根をmainのローカル変数にすりゃいいんだ。

delのComponent管理がコレに近い。ただし根のApplication変数は
なぜかglobalだが(わら
あとObjectiveCつーかOPENSTEPフレームワークの
NSAutoreleasePoolっていうクラスの仕組みも、それに近い。
110デフォルトの名無しさん:2001/07/17(火) 00:21
>>109
グローバル変数がダメなのではなくて、
管理できないグローバル変数がダメなんだよ。
グローバル変数を効果的に使用して効果をあげているプロジェクトは
幾つもあるし、その使い方は哲学的であることもしばしば。
セオリーを知って、その上に思想を持った自分のセオリーを構築できれば
周囲は説得できるし、武器になると思う。<ごめん、かなり抽象的だね。
111デフォルトの名無しさん:2001/07/17(火) 00:26
>>110
プログラムに哲学や思想を持ち込むなよ
周囲が迷惑する
112デフォルトの名無しさん:2001/07/17(火) 00:28
Del厨が来ると雰囲気が悪くなるね
113デフォルトの名無しさん:2001/07/17(火) 00:29
>>110
現場のプログラマに周知徹底できてこその哲学と思われ
114デフォルトの名無しさん:2001/07/17(火) 00:40
>>111
いや、それは不可避だぞ。どうせ人間のやることだ。
言語仕様みたいに、(作者の)哲学の塊みたいなもんを
俺らは日常的に使わされてるわけだろ(わら

問題はそこじゃない。

>>110
結局は、哲学が「(客観的に見て)間違って」なければ、通るかもだな。
計算機的に間違ってる哲学なら、なんぼ主張しても通らないか、
無理を通して道理引っ込む(=プロジェクトが崩壊)かどっちかだ。

メジャーな言語(という哲学の塊)を使っても大丈夫なのは、
ひとえに、その作者の哲学が間違ってなかったから、だ。
一度、ドキュ会社が作ったドキュ言語を使わされてみろって。
昇天できるぞ。

哲学といっておきながら、人間の思想だけの問題じゃなく、
同時に計算機をきちんと動かすこともできる思想、
でないと駄目ってのが、ここでいう意味の「思想」
って奴の味噌だろう。

そうでない場合は、つまり「独善」だ。
115デフォルトの名無しさん:2001/07/17(火) 00:46
>>111
申し訳ない。
哲学や思想という言葉に拒絶反応を示す人間が居る事を考えるべきだった。
ポリシーという言葉ならOKかな?
グローバル変数は何処からでも参照できる(書き換えできるとは言わない事に
注目して欲しい。)特徴を持ったオブジェクトなんだ。
この素晴らしい機能に着目した事が無いなんて寂し過ぎると思う。
カプセル化、隠蔽は役に立つポリシーだが、自分自身のポリシーを
確立させることもプロとして重要な事だよ。
116デフォルトの名無しさん:2001/07/17(火) 00:50
この擦れみてると凡庸な下っ端はつらいね、死にたいね、シネヨ
まぁ、リビドーを満足させるような状況になるには、そうだねぇ、
あと何年かは耐えないとね。あ、そのころにはあんた、部下から
この擦れのように陰でぶちぶちいわれてんだけどね。
117デフォルトの名無しさん:2001/07/17(火) 00:54
>>115
>哲学や思想という言葉に拒絶反応を示す人間が居る事を考えるべきだった。
>ポリシーという言葉ならOKかな?

おい。それは全く同じだろ(わら

>グローバル変数は何処からでも参照できる(書き換えできるとは言わない事に
>注目して欲しい。)特徴を持ったオブジェクトなんだ。

おい。「変数」なら書き換えも許可だろうがよ(わら

自分自身の言葉の「正確な」意味に、少しは注意してくれ。

ちなみに上記は、単なる揚げ足じゃなくて、体まるごと転倒だぞ。
上記の齟齬によって論旨本体が危うくなってる(のを
俺は蹴っ飛ばした)のだからな。

判るか?
ポリシーという言い換えにもなってない言い換えを
するってのは人様を馬鹿にしてるに過ぎないのだし、
書き換え可能かどうかが結構重要な焦点になるんで
そこを間違えたら一大事、なのだ。

繰り返すが、
>自分自身のポリシー

ポリシーが工学的(てーかそれ以前)に間違っている場合は
プロとして死だぜ。
118デフォルトの名無しさん:2001/07/17(火) 00:55
要するにさ、プログラミングって発想なんよ。アイデアなんよ。
組織がどうたらさ、文句いうなら自営でやれよ。お前はそこまで
独創的にアイデアがあるんだろう?自営が恐いならだまっとけ、
サンシタ。
119デフォルトの名無しさん:2001/07/17(火) 00:56
グローバル変数を批判するのは判りきったことなのに
そんなのを偉そうにいうオヤジつまらん。
あたりまえの常識を盾に説教たれるオヤジはつまらん。

グローバル変数賛成派頑張れ。オヤジをぶっ倒せ。
120118:2001/07/17(火) 00:57
自営つうか、だまってやっとけ。
121デフォルトの名無しさん:2001/07/17(火) 00:58
>>118
>要するにさ、プログラミングって発想なんよ。アイデアなんよ。

発想とかアイデアが必要とされるのは、研究とかごく一部の分野だけ。
122デフォルトの名無しさん:2001/07/17(火) 00:59
el mundo ausente
123デフォルトの名無しさん:2001/07/17(火) 01:02
>>117
おや、ポリシーという言葉もお気に召さないのかい。
と言う事は君はかなり確固たるポリシーを持っている事になる。
ある意味感心だ。
私も安直に使われるグローバル変数に悩まされている者のひとりだ。
そういう意味では君の悩みは私の物でもある。
ただし、美しいルール(ルールではどうだろう?)の下に使われる
グローバル変数は有意義な場合が有る事を判って欲しい。
124デフォルトの名無しさん:2001/07/17(火) 01:03
>>120
おまえさ、通勤途中で「あ、こうすればいいのか」
っておもいつたことないだろう?
それじゃ、プログラミング人生もつらいわな。
転職したら?
125117:2001/07/17(火) 01:14
>>123
>言葉も

おい。俺は>>111じゃないぞ。

>美しいルール(ルールではどうだろう?)の下

たぶん違うはずだ。たしかlawという単語(=法則)が適合するはず。
味噌は、人間様の自由意志で必ずしもなんでも選択可能であるとは限らない、
という点なので。
それを満たさない、つまり人間の考え次第でどうにでもなるものは、
たいてい気分の問題に過ぎない。

>>124
いいこといった!
126デフォルトの名無しさん:2001/07/17(火) 09:14
エレベータには何重にも防護策がとられているが、
うちの会社は優秀な技術者ばかりなので、
エレベータは一度も防護策が必要になるようなトラブルが発生することはない
だから今後の製品には、楽だから防護策を取り入れない

そんな会社の製品を買いますか?
127 :2001/07/17(火) 09:25
わけわからん例えだなぁ。グローバル変数を使うメリットも、
グローバル変数不使用は「防護策」の「ひとつ」である、という事実も、
まったく入ってないじゃん。小学生からやり直せ。
128デフォルトの名無しさん:2001/07/17(火) 09:34
グローバル変数を使うメリットは>>1が書いている通り「楽」だからだろ
そんな手抜きプログラムを喜んで使う会社は無い
129デフォルトの名無しさん:2001/07/17(火) 10:22
>>115
> グローバル変数は何処からでも参照できる(書き換えできるとは言わない事に
> 注目して欲しい。)特徴を持ったオブジェクトなんだ。
書き換え不能のオブジェクトは「定数」という。

>>123
> グローバル変数は有意義な場合が有る事を判って欲しい。
でも大概の場合、「自分だけがそう思っているだけ」である
場合が多いことを判って欲しい。
130デフォルトの名無しさん:2001/07/17(火) 10:43
誰かが書いていたけど、MFCで言う、CWinAppの派生クラスの唯一のインスタンス
が持つ、パブリックなプロパティはどうなんですか?
このクラスに入れれば、管理されたグローバル変数みたいなもんですけど。
131130:2001/07/17(火) 10:44
やっぱりアクセス関数を書くのかな?
132デフォルトの名無しさん:2001/07/17(火) 11:29
関数経由にすればブレークポイントが置けるのでデバッグで「楽」が出来る
>>1が言っているのとは別の意味で「楽」になる
133デフォルトの名無しさん:2001/07/17(火) 13:47
C/C++ではファイル内static変数が使えるけどこれはグローバル変数とみなすの?
これはあったほうが便利だと思うけど。
134デフォルトの名無しさん:2001/07/17(火) 14:11
>>133
駄目だろ。
グローバル否定派は、変数は全部ローカル変数じゃないと許さないんだよ(藁
135デフォルトの名無しさん:2001/07/17(火) 14:36
自分の作り方としては 組込みなんかだと回路の方もやるせいか
フラグ志向というか、状態遷移図的な手法が多くなるな。
当然、グローバル変数のみ的世界。 他人から嫌われています。

パソコンの世界で仕事すると、Delphiを使うせいか殆どこんな書き方はしないんだけど
136デフォルトの名無しさん:2001/07/17(火) 14:41
組み込みはハードの作法に従って好きなようにやってください。
137デフォルトの名無しさん:2001/07/17(火) 15:05
つーか、タッチブレークかけられるならグローバル変数の方が
デバッグしやすかったりするね。
138デフォルトの名無しさん:2001/07/17(火) 16:51
>>134
>グローバル否定派は、変数は全部ローカル変数じゃないと許さないんだよ(藁

おーい。OOPのメンバ変数のことも考慮してくれー(わら
というか、確かに本物のドキュなら考慮しないだろうけどな(わら

>>135
>フラグ志向というか、状態遷移図的な手法が多くなるな。
>当然、グローバル変数のみ的世界。 他人から嫌われています。

去年(今年じゃなく)のObjectDay2000で、組み込みの人も
大ホールで喋ってたぞ。
いわく、組み込み屋の開発手法において、第一の波は状態遷移図、
第二の波はOOP、なのだそうだ。
というか今第二の波に襲われ(教われ?)中、なのだそうだ。
まぁ1年以上前の話だ。今はもっと進んだんだろうな。

状態遷移をOOPで表すといえばStateパターンとか、
それによる挙動の自動変更といえばStrategyパターンとか、
ネタは色々あると思われるぞ。
状態遷移図すなわちグローバル変数、というもんでもない。

というか、1つのプログラムの中に同時に複数の「状態(遷移空間)」を
持ち込もうと思ったら、言語を使うかどうかはさておき手法的には
どうしてもOOP風になるだろう。

>>137
>タッチブレークかけられるならグローバル変数の方が
>デバッグしやすかったりするね。

もしかしてデバッガの話っすか?
それなら、今のグローバル変数とかしか監視できないデバッガを
逝かせるほうが、先決だな。

「Objectデバッガ」とでも呼ぶべきものが欲しい。
まぁVC++でも真似事は出来るんだが。Objectのポインタ値(変数じゃなく値)を
DragDropすれば、使い勝手は悪いが一応1つの(動的に作られた)Objectを
ストーカーできる。
139デフォルトの名無しさん:2001/07/17(火) 19:18
とりあえず。
グローバル大好きな、馬鹿がプロジェクトに紛れ込むと死ぬから
生理的に嫌悪。
(馬鹿じゃなければ良いんだけどね)

(もう、あのデスマーチは思い出したくない。
( 思い出したくなくても、時々夢にまで出てくる。
( 鬱ー
140デフォルトの名無しさん:2001/07/17(火) 20:55
namespace global
{
int var;
char var2;
}

anyfunc(...)
{
using namespace global;

...
}

とか、どう?
141デフォルトの名無しさん:2001/07/17(火) 23:13
>>140
小手先のテクニックはどうでもよいと思われ
142デフォルトの名無しさん:2001/07/24(火) 07:42
グローバル変数がout of rangeにならないようにする工夫ってある?
143>142:2001/07/24(火) 07:45
get/setグローバル関数でラップ
144デフォルトの名無しさん:2001/07/24(火) 10:51
グローバル変数って素敵じゃないですか?
どうしてそんなに毛嫌いするんですか?
みなさんバカですか?
きっとそうなんだろうか。
世の中プログラムの何たるかを知らない奴がおおすぎるよ。
145デフォルトの名無しさん:2001/07/24(火) 10:57
               ◎___
            .  //     /
              . // ソ   /
             // ラ  ./
             // ネ  /
            // /  ./
             // ヨ  /
       ∧空∧/___/
   _______ {´ ◎ `}< ソラネーヨ
  ,ィィ,ィィ\):::::::::(
  しししし(_つ:::::::::ヽ
   ヽ__ノ::::::::::::::|二手
      (;;;;;;;;;;;;;;;;;;;)
      // >>__
    <◎:::> <::::◎ノ
146デフォルトの名無しさん:2001/07/24(火) 11:18
グローバル「定数」ならOK?
147デフォルトの名無しさん:2001/07/24(火) 11:58
>>146
const int a = 100;
みたいなのか?
148デフォルトの名無しさん:2001/07/24(火) 12:13
>>143
なるへそ。
149デフォルトの名無しさん:2001/07/24(火) 13:14
>>148
ヴァカ発見(藁
150デフォルトの名無しさん:2001/07/24(火) 13:44
>>147そうです。
151147:2001/07/24(火) 14:37
>>150
俺は当然のように使うけど、だめなのかな。
152デフォルトの名無しさん:2001/07/24(火) 15:42
>>143
ラッパー経由で書き込むと、このスレで追求してきた
メリットが失われませんか?
153デフォルトの名無しさん:2001/07/24(火) 15:42
グローバル定数は使っていいに決まっている
154デフォルトの名無しさん:2001/07/24(火) 15:46
>>153
使うべきときにのみ使おう。
なるべく使わなくて済むなら使わない。
どうしても使った方が見通しよくなるのであれば使う。
無意味にグローバル変数に 頼る のは好ましくない。
155後発メンテ隊:2001/07/24(火) 16:09
作る方は楽だろーが、後でメンテするとき一つのグロが
100も200も見つかるとバグ要因探しきるのすんげーーー大変なんだよ。
使われ所を特定できるGetSet使っているほがまだ楽ヂャ。

っちゅうかモノ作るときに作り手が楽するためにグローバル使うな。
156デフォルトの名無しさん:2001/07/24(火) 16:10
できるだけprotectedでいきましょう。
アホなオーバーフローすることがなくなります。
157デフォルトの名無しさん:2001/07/24(火) 16:43
オイラはバカなんでグローバル変数を管理しきれる自信がありません。
なので使わないか、使うときでも static にして操作関数を extern
します。天才の皆様は使っていただいて構いませんが、僕とかかわる
ときはバカな僕に合わせてください。

そんとき「合わせられん」って言い訳は聞きませんのでそこんとこヨロシク。
158デフォルトの名無しさん
とある下請けソフト会社の尻拭いするためにソースを見てたら、
int i,j,k;
というグローバル変数があった。情けなくてどっと疲れた。
もちろん、i,j,kはいたるところで、for文のループ変数として使われていただけだった・・・
その会社、つぶれたけどな。