トップページ⇒tech
158コメント57KB

グローバル変数を使おう

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさんNGNG
グローバル変数を使った方が楽だよ。きちんと管理できない
バカがいるから使うと面倒になるだけで。
0002マルチNGNG
助かる。
0003デフォルトの名無しさんNGNG
メンバ変数をpublicにしてアクセスした方が楽だよ。きちんと管理できない
バカがいるから使うと面倒になるだけで。
0004デフォルトの名無しさんNGNG
Javaだったら

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

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

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

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

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

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

static int value;
int *getGlovals(void)
{
return (&value);
}
0023デフォルトの名無しさんNGNG
クラス変数=グローバル変数

>>1
ガンガン使われてますが?
0024デフォルトの名無しさんNGNG
>>20
それはお気の毒に。。。
0025デフォルトの名無しさんNGNG
今の世は、グローバルスタンダードなんだよ!
0026デフォルトの名無しさんNGNG
#define private public
0027kitazNGNG
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!
00281NGNG
C++のクラスのメンバ変数でもいっしょだと思うよ。
Get〜やSet〜を用意するならパブリックにしても
なにも変わらないと思うけど。間接的になってる気がするだけで
値を間違って変更するばかはわざわざGet〜を使って変更すると
思うけど。
0029デフォルトの名無しさんNGNG
>>27
> MFCやC++Builderが生成したフレームワークにある、アプリケーションクラス
>のインスタンスがそれ。
MFC はしらないが、VCL の Application はグローバルじゃない。
Formsの名前空間内にあるぞ。
グローバルとパブリックを勘違いしてないか?
0030デフォルトの名無しさんNGNG
>>28

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Global.i

ね!オブジェクト志向な感じでしょ?
0054デフォルトの名無しさんNGNG
>>53
雑魚は去ね
0055デフォルトの名無しさんNGNG
>オブジェクト志向

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

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

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

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

63=厨房=DQN
0065デフォルトの名無しさんNGNG
クラスだけ渡されて使ってくれって仕事もありそうだが…
0066デフォルトの名無しさんNGNG
64=復唱君=DQN

64みたいなDQNがプロジェクトに居たらイヤだな・・・
0067デフォルトの名無しさんNGNG
66=63=未経験リアル厨房

66みたいのはDQNは社会に出てこないで欲しいな・・・
0068デフォルトの名無しさんNGNG
64=67=口だけのなんちゃってエンジニア

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

いろいろ混乱してる(w
007372NGNG
訂正
>>63-67 -> >>63-70

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

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

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

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

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

どんな作業も管理者IDを使った方が楽だよ。きちんと管理できない
バカがいるから使うと面倒になるだけで。
0079デフォルトの名無しさんNGNG
*を使った方が楽だよ。きちんと管理できない
バカがいるから使うと面倒になるだけで。

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

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

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

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

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

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

根本から話が噛み合いません。
これ以外に言うべき言葉が見つかりません。
0093デフォルトの名無しさんNGNG

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

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

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

この場合はグローバル必然的に増えるよーな…
00971NGNG
>>96
それはグローバルを禁止して、やたらとポインタや
ポインタへのポインタが引数に並ぶのといっしょ。
別に全面的にグローバルにすべきってわけじゃない。
gotoもそうだけど、使うのは厨房って考えは間違ってるよ。
0098デフォルトの名無しさんNGNG
>>97
全然違います。
00991NGNG
>>98
具体的におねがいします。
0100デフォルトの名無しさんNGNG
簡単なことだ。
グローバル変数の使用は許可制にすればいいんだよ。
0101デフォルトの名無しさんNGNG
そして許可制にして管理すると、開発が遅れる
かと言っておのおのが楽だからと、勝手に作ると管理できない
結局全然楽じゃない
■ このスレッドは過去ログ倉庫に格納されています