TrueとFalse
■ このスレッドは過去ログ倉庫に格納されています
0001新入り
NGNG「おまえの書いたコードだけ処理成功時の戻り値がTrueだ。直せ」
と言われたので、
「どうして処理失敗時の戻り値がTrueなんですか? 理由を教えてください」
と聞き返したら、
「C言語的に考えたら正はFalseだろ?」
と言われたので、
「単語の意味的に逆でしょ?」
と突っ込み返したら、返事に困ったのか、
「お前だけそれじゃあ困る。結果的に不具合が出ないコードを書ければいい」
と説教気味にまとめられました。
どこの教科書にそんな風に乗ってんですか? と聞きたかったのですが、
立場上怖かったので聞くのやめました。
MSDN見たってエラーはゼロ(False)だってのに・・・。
TrueとFalseが逆なら逆でそのルールに従うけども、理由が説明できないと
言うのは如何なものかと思いました。
他の所ではどうなっているか知りたいので教えてください。
気にしたら駄目なんでしょうか? それとも金が絡むとTrueもFalseになるんでしょうか?
0002名無しさん@1周年
NGNGこ、これが意味不明だ… >1の上司
0003Akat
NGNGNTSTATUSのSTATUS_SUCCESSが0で定義されている事から、
成功時はFalse論が出たんじゃないでしょうか?
0004名無しさん@1周年
NGNG自分の上司も、ちょっとおバカさんです
今日もヤツの気まぐれで2時間かけて本社に出社して
すぐに1時間かけて客先へレビューにいきました
自分の作った設計書なのに「説明は俺がするから、俺のわからないところだけ
補足説明してくれ」
いざレビューが始まったら自分の書いた設計書をただ棒読みしてるだけ。
しかも心の中で一人読んで納得して「あれが、こうなって、これが、ああなります」
なんて全然わかりません。
レビュー終了後、客先のマシン室で作業が出来るのでやろうと思ったら
「おまえは本社へ帰れ」と言われた。
どう考えても1時間かけて本社へ帰るよりもこのまま作業を続けたほうが
効率イイのに。。。
ほんっと あったまわりーなー
00054
NGNG0006>4
NGNGわかるぞ。
0007名無しさん@1周年
NGNG1でも2でも3でもtrueじゃん
違ってる?>おれ
指摘してえらい人
0008。>7
NGNGTRUEとFALSEを逆に使ったら訳わからなくなる。
>1
>「お前だけそれじゃあ困る。結果的に不具合が出ないコードを書ければいい」
それなら、何でそろえる必要があるんだと聞き返したくなるよなぁ。
こういう使い方するなら、TRUE、FALSEは使わずに、
0をOKなりSUCCESSなりで定義して使うのがまっとうだと思うけど。
0009新入り
NGNG間違ってません。Boolean型以外では。
エラーが複数ある場合は、ゼロが成功で、他の値がエラーコードになるけど、
Boolean型って「成功・失敗」の二択じゃないですか。
補足っぽいですが、指摘されたコードは、戻り値がすべてBoolean型でした。
整数型ならゼロ=成功だけど、ブール型は考え方がちょっと変わると思います。
仮にも一企業のボス、しかも現場で指揮を取っている人間が「俺がルールだ」的な
考えでいいのか? と思わされました。
0010名無しさん@1周年
NGNGenum {
TRUE@`
FALSE
};
と、やられて困った;_;
0011。>9
NGNGそれはまた・・・・・
実は、その上司は、True@`Falseの意味を知らなかったのでは?
0012名無しさん@1周年
NGNG怒られるかもしれないけどさ、聞くね
booleanってintじゃないの?
0013名無しさん@1周年
NGNGBoolean型でFalse == 「成功」、True == 「失敗」でいけない理由は何ですか?
0014名無しさん@1周年
NGNGって思うから単語の意味的におかしいって思うんでしょ
False == 「問題なし」、True == 「問題あり」
って思えば気持ちも晴れる
君も今日からは仲間達とコード規約も同じになれる
0015>9
NGNGエラーの有無をBooleanで返すことを期待した。
(私は賛成しないが)
理由は前出のエラーコードをintで返す関数とあわせるため。
(ま、ちょっとだけ気持ちは分かる)
が、その説明をはしょりすぎた。「正はfalseだろ」=「負はtrue」。
すなわちその上司の頭には
0=正常
-1=なんかのエラー
-2=別のエラー
というモデルが念頭にあった。
「単語の意味が逆でしょ」との意見に、こいつは「エラーの有無でなく、
成功の可否をBooleanで返すモデルを考えているのだな」と感じた。
ただし他の関数が一貫して「エラーの有無を返す」使用になっているので
「おまえ(の関数だけ)それ(異なる仕様)じゃ困る。結果的に(他のプロ
グラマが混乱して不具合を起こしているので、他と統一して)不具合が
でなくなればよい」
ってとこかな?
0016名無しさん@1周年
NGNG返すべきか、という議論は確かに避けたい気もする。
答えが出る議題でしかもそれが製品の役に立つなら議論する価値はあるが、
おそらく答えは出ないし、直接は製品に役に立たないから。
間接的には議論することで技術やお互いの考え方に対する理解が深まる
メリットはあるので、それは比較的ひまなときにやるのがよろしいかと。
0017新入り
NGNG16の「成功の可否」か、「エラーの有無」かの2つの考え方で双方の考えが
食い違っていたために起きた問題ですね。
True=真(正しい)、False=偽(正しくない)的な考えだけで自分はものを
考えていたので・・・。
吐き出してみてすっきりしました(勉強にもなった)。
また納得がいかないことがあったら、愚痴りに来ます。んでは。
0018名無しさん@1周年
NGNGと言われたら「エラーなら真」だと思うが・・・・
正常かどうか と エラーかどうかは反対じゃないの?
0019名無しさん@1周年
NGNGどこだったっけ?
0020名無しさん@1周年
NGNGプログラム内では、
単に成功/失敗だけを返すなら「C言語的に考えたら」成功は非ゼロ(true)だね。
0021名無しさん@1周年
NGNG私も賛成だが、それを根拠を挙げて説明せよ、と言われると妙案が
思いつかない。。
0022名無しさん@1周年
NGNGさらにいえば成否と正否もごっちゃにしてるね。
0023名無しさん@1周年
NGNG確かK&Rに「ダメを表すのに0使うよ」みたいなこと書いてあったと思うが。
まあ、読み返してないので保証はせんが。
ifも0で不成立だしね。
0024名無しさん@1周年
NGNG多いよなぁ。エラーコードはerrnoに入ってる。
0025名無しさん@そうだ選挙にいこう
NGNG-1が失敗
0は不定
厨房の煽りです、つっこんでネ♪
0026名無しさん@1周年
NGNGintで返す場合はエラーコードって慣習的に0が成功のような気がする。
あ〜、でもNULLポインタ(=0?)は失敗を表すなぁ..。
0027名無しさん@1周年
NGNGいずれにしてもマジックナンバーである数値での比較は駄目。
表意定数にすべき。
0028名無しさん
NGNGC++から呼んで使っていた分には問題がなかったけど、
その関数をVBから呼ばせたらうまく動かない。
よく考えたら、CとVBではTRUEの値が違うんだな。
そもそも、result == TRUE なんて判定するなぁ。
result == FALSE か result != FALSE で判定しろって。
0029名無しさん@1周年
NGNG0030名無しさんZ80
NGNG0031名無しさん@1周年
NGNG0032名無しさん@1周年
NGNG0は未完成モジュールの返り値とすれば良い。
0033名無しさん@1周年
NGNGumai!
0034名無しさん@1周年
NGNGなんか、処理のエラーを返す関数と、True/Falseを返すBoolean関数を
混同して考えてない?
上司が言ってるのは前者の方で、True/Falseウンヌンは単に
1とか0とかの数字の事を表現したかったのだな。
0035汗ぶら
NGNG>1が成功
>-1が失敗
>0は不定
どれにしたって
プロジェクトの崩壊が瞼に浮かぶ
かわいそうに。
0036名無しさん@1周年
NGNGなんか使っちゃまずいことってあるんでしょうか?
トレードオフが大きすぎ?
0037名無しさん@1周年
NGNG(More)Effective C++読め!(信者)
003836
NGNGいや、そりゃそうなんだけどさ。
巷で例外使ってないC++のプログラムって
なんか違うでしょ?
0039名無しさん@1周年
NGNGもちろん例外使ってるよ。
でもコンパイラによっては細かなバグもあるから注意。
Tryブロックの中で、スタックにインスタンス作らない方が安全かも。
0041名無しさん@1周年
NGNGそうとは思えないぞ。
>>1が成功
>>-1が失敗
>>0は不定
UIでよくあること。
1=成功
0=キャンセル
-1=失敗
0042名無しさん@1周年
NGNGif( status > 0 ) MessageBox("成功しました" );
新人(仮定)がやりそうじゃん?
0043名無しさん@1周年
NGNGは例外を投げることをはっきり書いたのに、コアダンプするってバグ
レポートが来たっけなぁ…
0044名無しさん@1周年
NGNG状況に応じた処理が可能になるのだよ。
キャンセルか成功で処理が進められる場合は(status >= 0)
キャンセルも失敗に含める場合は(status <= 0)
004542
NGNGstatus==0 || status == 1
と書くべきだっつってんの。
大小比較したいなら戻り値を「ステータス」じゃなくて「成功率」にしなさい。
■ このスレッドは過去ログ倉庫に格納されています