トップページ⇒tech
303コメント86KB

VB.NETのとんでもない欠陥に気づいた

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2006/05/10(水) 04:08:25
For i = 0 To 100
Dim x As Integer
Next i


100こう書くと、100回同じ変数を宣言してる事になるのに、問題なくデバッグ通る。
しかも変数使っても問題なく動く


なんだこのバグ言語
0253デフォルトの名無しさん2010/04/11(日) 17:10:32
>>249
お前は変数宣言を何万個も書くのか?
まずその糞設計を見直せ。
0254デフォルトの名無しさん2010/04/11(日) 19:59:02
忍法論点ずらし
0255デフォルトの名無しさん2010/04/11(日) 22:45:49
>>249
IDEがあるだろ
「End If」をプログラマが打ち込むことはない

むしろC#の{ }の方が何の終わりだかわからなくなって不便
0256デフォルトの名無しさん2010/04/11(日) 23:57:53
何の終わりか分からなくなるほど長いメソッド作るなんて設計が腐ってるとしか言えんわ
0257デフォルトの名無しさん2010/04/12(月) 00:02:19
>>256
よくこういう「勘違い」をしてる人がいるんだけど、
「メソッドは可能な限り短くシンプルに書くべき」、というのは正しいが、
それは「全ての処理は短いメソッドのみで書くべき」という意味ではないんだよ。
0258デフォルトの名無しさん2010/04/12(月) 00:40:45
>>257
そんなん一々言うまでもない当たり前の事だろ。「勘違い」と言われても困る。
0259デフォルトの名無しさん2010/04/12(月) 01:56:21
>>258
馬鹿か?
ならメソッドが長いこと = 設計が腐ってる、ではないはずだが。
0260デフォルトの名無しさん2010/04/12(月) 02:02:17
はぁ?
何の終わりか分からなくなるほどゴチャゴチャに詰め込むような設計は腐ってるだろ
0261(u_・y) ◆e6.oHu1j.o 2010/04/12(月) 15:19:21
260は経験が浅い
一箇所に詰め込んだほうが可読性が上がる場面に出会ったこともないのか?


{ }の対応分からなくなってしまうプログラミングの脆弱性は
修正方法をまだ世界の優秀な人たちが検討中
さっさとこの問題が解決していれば、今日という日の諍いもおきなかったのにね
0262デフォルトの名無しさん2010/04/12(月) 18:07:20
馬鹿か?
可読性が下がるほど詰め込むなと言ってるんだが
0263デフォルトの名無しさん2010/04/12(月) 21:48:22
シンプルにしようと定義含めて1メソッド3行の縛りでプログラム書いてみたらいつまで経っても終わらない。
もうメソッド名も思い付かない。
いったい何が間違っていたのか?
0264デフォルトの名無しさん2010/04/12(月) 22:08:48
2chなら1レス3行以内の縛りは必要かもしれないが
1メソッド3行縛りはやりすぎだろう
0265デフォルトの名無しさん2010/04/12(月) 22:59:30
やるなら1メソッド3引数縛りだな
0266デフォルトの名無しさん2010/04/12(月) 23:34:11
VB暦2週間の初心者なのですが、
>>1のどのへんがバグなのか教えてください!
>>266みたいな使い方は間違えているのですか?

Private Function GetHogeList(ByVal max As Integer) As List(Of Hoge)
Dim hoges As New List(Of Hoge)

For index As Integer = 0 To max
Dim x As Integer
x = GetX(index)
Dim hoge As Hoge
hoge = GetHoge(x)
hoges.Add(hoge)
Next
Return hoges
End Function
0267デフォルトの名無しさん2010/04/16(金) 23:41:03
>>266
>>1がスレを立てたこと
よく考えれば分かるが、>>1の理論で言えば、
関数を呼び出すたびに、関数内で同じ変数を宣言してる事になるのに…
ってことになる。
ちなみにVB6までは、.NETとはスコープが異なっていて、
その状態であれば、仕様がおかしいと言えばおかしい。
※と言っても仕様だからと言ってしまえば、それまでの話でバグではない。
0268デフォルトの名無しさん2010/05/12(水) 20:20:39
NETに限らず、MSのBASICは「初心者用」を自分たちの都合、利益のためだけの
名目にして、ごまかし続けているから「仕事」「金」にはならない。スタックを拡大
できない開発言語は、ほんとうの遊びにしかならない。
業務用開発に使える他の会社のVBを覚えたほうがいいよ。そのほうが「金」
になる。
0269デフォルトの名無しさん2010/05/12(水) 20:24:12
GUIが楽だから、スタックが拡大できるようになれば、用途はいきなり拡大する。
0270デフォルトの名無しさん2010/06/04(金) 00:07:15
VBに限らないが、.netでwinformに使えるgridがショボすぎる。
セル結合は出来ないし、ヘッダ+明細みたいな階層表示もできんし。
0271デフォルトの名無しさん2010/06/04(金) 14:49:11
VBってなんでスコープがないの?
0272デフォルトの名無しさん2010/09/25(土) 20:35:25
野村スコープ
0273デフォルトの名無しさん2010/10/01(金) 12:44:11
>>271
ないか?
0274デフォルトの名無しさん2010/10/01(金) 13:04:14
VBAのスコープは腐ってるけどVB.netにはブロックスコープあるぞ
0275デフォルトの名無しさん2010/10/01(金) 13:05:04
4ヶ月前じゃねーか・・
0276デフォルトの名無しさん2010/11/05(金) 18:24:05
dim xはforの中だけで有効だおww

Next通過した時点でxは消滅するんだおww
0277デフォルトの名無しさん2010/12/23(木) 16:11:02
dim xはforの中だけで有効だおww

Next通過した時点でxは使えなくなるんだおww

メソッドが終了時に消滅するんだおww
0278デフォルトの名無しさん2011/03/10(木) 14:58:18.80
C だと
{
 int i;
 int k;
 for( i=0; i<10; i++) {
  int k;<---この変数は上の kとは違う変数
 ・・・・・
 }
}
と変数をブロックでネスト出来る。
0279デフォルトの名無しさん2011/03/10(木) 15:25:45.28
それC#だと逆にエラーになるよ
わかりにくく、ミスの原因になるから
0280天使 ◆uL5esZLBSE 2011/07/05(火) 01:24:41.77
>>277
---
<<<<<< dim xはforの中だけで有効だおww >>>>>>(キリ!!ッッッ!
--
<<<<< Next通過した時点でxは使えなくなるんだおww >>>>>(キリッッッッ!ッッッッ!!
--------
<<<<<<<< メソッドが終了時に消滅するんだおww >>>>>>>>(キリッ!!きリ!!!きリッ!!!きリッ!!!!!
------------(キリ!
ゴミグラマってバカだったんだな
0281ななし。2011/07/27(水) 17:23:50.13
カ オ ス ラ ウ ン ジ ゆ る せ な ぁ い ー
0282デフォルトの名無しさん2011/08/11(木) 13:17:08.96
ttp://www.publickey1.jp/blog/11/officejavascript.html
0283デフォルトの名無しさん2011/08/11(木) 13:46:19.11
コピペ脳の恐怖、まで読んだ。
0284デフォルトの名無しさん2011/08/11(木) 22:39:32.60
>>280
死ねカス
0285デフォルトの名無しさん2011/08/17(水) 12:34:58.66
>>1
全然バグじゃないな

どうせ言うなら
MicrosoftAccessやMicrosoftVisualStudio(VisualBasic VisualC++ etc)
は、Windows以外では動かないとか言え

ハンディターミナルは、WindowsじゃないのにVisualBasicで作れると
思っている奴がいる
0286デフォルトの名無しさん2011/08/17(水) 13:59:28.92
CreateGraphicsのDrawLineを使って
折れ線グラフを描こうとすると
描けるが他のにフォーカスを当てて再度
VBのプログラムに戻すとグラフが消えている事がある。
これってどうにかならない?
0287デフォルトの名無しさん2011/08/17(水) 15:48:01.03
CreateGraphicsなんかいらん
Paintイベントで毎回e.Graphics.DrawLineと描き直すか、それが嫌なら
Graphics.FromImageでビットマップに描いといて
PaintイベントでDrawImage
VB.NETは質問スレがあるから今後真面目な質問するならそっち行け
0288デフォルトの名無しさん2011/09/07(水) 18:48:52.93
スクロールバーのMaximumはバグっている。
どうやってもMaximum未満の値しかとらない。

これ困るんだが今更直されてもそれはそれで困るんだよな。
0289デフォルトの名無しさん2011/09/07(水) 18:53:46.78
あと、なんか大きなデータ(300MB程度)を扱おうとするとメモリーを確保できなくなる。
所詮はVBScriptの子孫なのだと思い知らされるよ。
ブラウザ上で小道具を動かすための貧弱な仮想マシン、それがDotNET。
0290デフォルトの名無しさん2011/09/07(水) 18:58:46.97
VB.NET は型キャストがうざい。Cはうざくない。
0291デフォルトの名無しさん2011/09/07(水) 18:58:58.94
Strict On は遅延バインディング全否定なので COMとの親和性がひどい。
0292デフォルトの名無しさんNGNG?2BP(0)
変数にはスクープってのがあって有効範囲があるからFor Nextの中では何回も宣言できる
0293デフォルトの名無しさん2011/09/24(土) 11:56:50.86
特ダネがあるのか。
0294デフォルトの名無しさん2012/08/12(日) 01:14:37.09
クソワロタwwwww
0295デフォルトの名無しさん2012/12/07(金) 18:15:54.48
te
0296桃白白2013/01/20(日) 05:22:24.99
.NETって再帰呼び出しが遅くない? これで確認したらJavaの3倍くらい時間かかった。

public static void Main()
{
  long s = DateTime.Now.Ticks;
  for (int i = 0; i < 40000000; i++)
  {
    Recursive(0);
  }
  long e = DateTime.Now.Ticks;
  long d = (e - s) / 10000;
  Debug.WriteLine(d);
}

static void Recursive(int c)
{
  if (c < 100)
  {
    Recursive(c + 1);
  }
}
0297デフォルトの名無しさん2013/01/22(火) 05:40:16.65
DEBUGモードのままコンパイルしてない?
0298桃白白2013/01/22(火) 06:11:55.19
>>297
え、わかんない。ちょと確認してみる。
0299デフォルトの名無しさん2013/11/30(土) 22:02:28.96
ぬるぽ
0300デフォルトの名無しさん2014/01/06(月) 21:15:44.29
VBメッセージボックスの「はい」「いいえ」などのボタンを、自分で指定したボタン名に変更できないでしょうか?
やりたいことは、「変更内容を保存しますか?」という質問メッセージを表示して、
これから行うアクションを、例えば、「保存する」「保存しない」「キャンセル」などで表示したいです。
03013002014/01/06(月) 22:56:03.18
すいません。質問スレと間違えました
あちらに再投稿します
0302デフォルトの名無しさん2014/04/18(金) 21:11:49.35ID:pSxMtBxF
>>32
forの中しか使えないだろ、そのi
0303停止しました。。。NGNG
真・スレッドストッパー。。。( ̄ー ̄)ニヤリッ
■ このスレッドは過去ログ倉庫に格納されています