うざいな
グローバルな領域におかれた変数を使うより、
スコープが充分に限定された変数の方が
- レジスタに置きやすい
- スタックレジスタ(?)の近くに置きやすい
から、速度的に有利になりそうな気がする。
290 :
仕様書無しさん:03/07/06 09:04
手抜き、不勉強でグローバル変数を使ってる奴が多いな
手抜きで使うのと、
知らずに使うのでは
天と地の差があるが、
結果は一緒だったりして
ごめんなさいごめんなさい。
手抜きでグローバル変数を乱発したプログラムを作ってしまいました。
このプログラムを保守する人には決して僕への連絡先を教えないでください。
お願いします。
あと、これからはこんな事をたくさんするので、お許しください。
293 :
仕様書無しさん:03/07/06 11:49
294 :
仕様書無しさん:03/07/06 12:05
質問です。
libpq(PostgreSQLのライブラリ)使ってるんですけど、
mainで接続し、その接続を別の関数へ渡すためにPGconn*を全ての
データベースへアクセスする関数へ渡しまくっています。
これって実はグローバルで宣言すればかなりすっきりだと思うのですが、
どうでしょうか?
296 :
仕様書無しさん:03/07/06 12:18
攻撃開始
熊本人よ、いい加減にしとけよな。
299 :
仕様書無しさん:03/07/06 12:25
グローバル変数 static にしよう。
でその変数ごとに set と get 作ろう。
だめ?
301 :
仕様書無しさん:03/07/06 13:50
public class Grobal {
private static final String hoge = "FUCKYOU!";
public static String getHoge() { return hoge; }
public static void setHoge(String str) { hoge = str; }
}
//
>>300 だめ、だな。
302 :
仕様書無しさん:03/07/06 14:13
>>301 グローバルインスタンスホルダー?
staticでなければ生成される順番が保障されるだけ少しはましだよ。
かなり馬鹿だと思うけど。
グローバル変数ばかりを目の敵にして
グローバル関数を野放しにする理由が意味不明。
あーあ。言っちゃった。
305 :
仕様書無しさん:03/07/06 17:21
コードの最初にたくさん定数やら変数が定義されてるのはほんとに見る気なくす。
アセンブラで書くにしても、領域確保しといて、
変数はそこからのインクリメント指定で使うようにしたほうが読みやすい。
嫌なのは変数のスペルが間違ってるのに平気なやつね。
英語勉強しれって感じ。
他人の定義した間違ったスペルにあわせてコード組むのがすんごい嫌。
大体グローバル定義なんて、
どの関数で使ってる変数かわからないし、関数の目的がよみづらくなる。
グローバル関数に関してもお話がでてるようだけど、同じことだと思う。
それってWindowsのカプセル化を意識してれば自然となくなるでしょ。
カプセル化することで、クラスの意味も明確にできるし、読みやすくなるはず。
グローバルにするなら関数も変数もそれなりの意味を考えて欲しい。
固定データなんかはグローバル変数に代入しておかない?
ROMに取られるべき物と、RAMに取られるべき物。
>>294 DBオブジェクトとか普通1本のPGMで1つでしょ。
そんならグローバルでもいいや。とか俺も思うね。
309 :
仕様書無しさん:03/07/06 19:48
>>308 グローバル変数ってのは誰でもアクセスができちまうことが問題なんだよ。
個数は問題じゃない。
呼び出し側が無制限に呼び出すため関わらなくていいようなクラスまで
巻き添えをくってしまうときがある。
また、グローバル変数が巨大なクラスにまとめられていたりすると
後でソースをみたとき呼び出し側が最低限必要なものがわからない。
結果バグが増える。
引き数で必要なときに必要な分だけデータを渡せるような設計にするべきだ。
できなきゃそいつは三流PGということで。
グローバル変数より、
const のつかないポインタを無条件に渡している方が漏れは怖い。
グローバル変数の使っている個所は、最悪、検索すればよいが、
ポインタにされてしまうと、検索すら使えない。もうだめぽ。
311 :
仕様書無しさん:03/07/06 20:53
>>310 グローバル変数の問題に比べたら遥かに小さな問題だと思うけど。
ねえ、みんな
もっとグローバルに物事考えようよ
言語によるのでは?
315 :
仕様書無しさん:03/07/06 23:09
いくらマスターだからってさ、
片手間にテキトーに作ったのも判るけどさ、
編集対象のテーブルの全フィールド名を素のまま
グローバル変数できらなくったって・・・!!
316 :
仕様書無しさん:03/07/07 00:04
>>309 >>グローバル変数ってのは誰でもアクセスができちまうことが問題なんだよ。
まぁ俺も大部分ではそう思うけどさ。
DBオブジェクトに限り、問題では無く恩恵を受けることのほうが多いよ。
複数のインスタンスやらスキーマを扱うDBアプリなんて至極まれでしょう?
そういったアプリではグローバル変数も「あり」ではないかと。。
本当にグローバル変数が必要無いのであれば、そのうちJavaでも定義出来なく
なるはずでしょ。一概に駄目では無いと思うよ。(もちろん大部分では駄目だけどね)
318 :
仕様書無しさん:03/07/07 22:27
二日市人よ、いい加減にしろ。
319 :
仕様書無しさん:03/07/07 22:28
ほんとに関数の引数に const char*
ぐらい書けるやつは一人も居ないのが泣けてくるよ。
バーカ。死ねバカ派遣先
320 :
仕様書無しさん:03/07/07 22:30
よく考えたらC++のクラスのメンバ変数も、クラス内のグローバル変数だよな。
うっかりしてたよ。
321 :
名無し@沢村:03/07/07 22:33
グローバル変数って、撲滅委員会を発足しなければならないほど、使ってるやつ多いわけ?
グローバル変数使ってるやつって少ないような気がするが…?
このスレの意図がわからん?
322 :
名無し@沢村:03/07/07 22:39
>>319 はあ?関数の引数に const char* 書けるやつがいない?
ふつー書くだろ、そのくらい?意味がわからん…
代わりに何書いてるの?
const char * って使ったことないな・・・
324 :
名無し@沢村:03/07/07 22:48
>>323 はあ?const char * 使ったことない?
const char * はプログラムの機能向上よりも安全性を高める意味で使うんだよ。
一般的な業務用アプリでも使ったほうがいい場面には山のように出くわすぞ。
一体ふつーどんなプログラム書いてるのよ?
326 :
名無し@沢村:03/07/07 23:14
>>325 プログラミングのことをあまり知らないの?
>>326 馬鹿自己中に、自作ライブラリをとんでもない使いかたされた
挙句に「バグ!なんとかすれ!」と理不尽な要求をされたという
経験がないんじゃないの。幸せデスネエ。
>>326 そんなことはないけど。
char * だけでも動作するし、const に興味が無かった。
330 :
仕様書無しさん:03/07/08 00:26
キャストしちまえばそれまでの話だからねぇ。
ただVC使ってるとどっちが入力でどっちが出力なのかわかりやすい。
俺漏れも,仕事を始めるまでは const 使った事がなかった。
てか,意味が分からなかった。
そんな昔のコード読むとガクブルものだね。
漏れはconst使ってるかどうかを、相手の技量測る目安にしてる。
もっとも今まで出会ったPGの中で、使ってた香具師は1割にも満たないが。
入出力を判りやすくするという意味では
VBで言うところのByValとByRefみたいな感じになるのかな?
>>321 ここにカキコしてるような屋しはグローバル変数なんぞ殆ど使わないレベルなのだろう。
というか、本当にいるんだよ。勉強しねぇ屋詩が。
ヤシらときたら各ソースファイルにそれぞれプロトタイプとかextern変数宣言を書くんだ。
おりゃーそれ見たとき顎がはずれるかと思っただよ。
>>334 新人の頃それを見て真似してたよ。
今は必要な時変数や関数フレンド化している。
・・・っていうかグローバル変数ってほとんど受け渡しに使ってるわけだし、グローバル関数は使いまわしだろ?
フレンドにすればスッキリできて問題解決じゃねーか?
漏れへんな事いってる?
336 :
仕様書無しさん:03/07/08 13:49
関数内で参照するだけなら
○○○ * より
const ○○○ * を使ったほうが
関数内で変更されることはない、と見ただけで分かる
あと、間違って関数内で変更しようとしても
コンパイルエラーがでたりする。 分かりやすい、安全、安い、かっこイイ。
337 :
仕様書無しさん:
引数の型のことです