アカウント名:
パスワード:
きっかけはこのおもしろい(オブラートに包んだ表現)ツイートではないかな
https://twitter.com/fnya/status/1192036095820615680 [twitter.com]
return (条件)? true : false; なんて書くくらいなら return 条件; だよなあそりゃレビューで落とすでしょ感
それを可読性が落ちると言ってつっぱねたというのがすごい。? true : falseがついている方が読みにくいと超個人的には思うけどね。
俺も、ゴミつけたら読み難いとしか思えないが、読み易い読み難いってのは個人の感性というか感想だから仕方ないのだろう。とはいえ自分に都合がよいからといって、一般的でないことやって読み難いから止めろと言われても、つっぱねるってのは、エンジニアを仕事にするの向いてないというか、チームに存在するだけで迷惑な奴ってことだから仕事変えて趣味だけに留めるべきだろうな。
https://twitter.com/fnya/status/1192039284821250048 [twitter.com]別ツイートで、こんなことも言ってるから、つまみぐい的にプログラム書いてきて、そもそものプログラムへの理解が乏しいようだから、自分の能力不足を改善せずに目先の問題回避してきた結果、そうしないと困ってるのかもね。そのあたりも思考方向がエンジニア向きじゃなさそう。
TokusiN @toku51n 11月6日返信先: @fnyaさん
trueとの比較は危険なのでやってはいけない。もしどうしてもbool型との比較が必要なのであれば!=falseにしなければいけない。1件の返信 2件のリツイート 10 いいね
fnya@Web/Mobileアプリ構築中 @fnya 11月6日
危険というのは、PHPやJavaScriptでオブジェクトがtrue判定されることですか?1件の返信 0件のリツイート 0 いいね
TokusiN @toku51n 11月6日
いえ、trueと評価されるべきものがfalse判定されることがあります。1件の返信 0件のリツ
みんな分かってると思うけど補足。
!= false と書くべきって理由は、false 、true は値としては 0 、1 になるってところ。そこに 2 とか 3 とかの値が来たときにどう動くのか、それを考えろってこと。
0 、1 以外は想定外? それならそれを保証しろ、と。ドキュメントとか assert() とかでも良いけど、実環境の実行時には無力。
あと、ツイートの「条件式だけで動作する」ってやつは「式の値」だと思うけど、C 特有で分かりにくいとは思う。「副作用」もあるだろうし。
_Bool は 0 か 1 以外の値取り様ないだろアホか
少なくとも C の仕様だと _Bool が 0と1が保持できることは保証してるけど、 0 と 1しか値ととらないことは保証してないよ。
https://kikakurui.com/x3/X3010-2003-01.html [kikakurui.com]> 6.3.1.2論理型 任意のスカラ値を_Bool 型に変換する場合,その値が 0 に等しい場合は結果は 0 とし,それ以外の場合は 1 とする。
とあるけども、0 と 1 以外の値を取らせる方法教えてPLZ
「0 と 1 以外の値を取らせる方法」の意味が理解できない池沼は無理しなくて良いよw
Cなんだから、アドレスとってメモリ書き換えればいくらでも書き換えられるよ?
未定義動作挙げる意図が分からん
どこに未定義動作が?bool型変数のアドレスを取ること?アドレスをchar*型にキャストすること?char*型変数で受けること?アドレスのメモリに任意の値を放り込むこと?
どんなバイナリ吐いてるんだろう...
gccがおかしいだけなような気がするhttps://godbolt.org/z/ZyKjvX [godbolt.org]
「型_Bool として宣言されたオブジェクトは,値 0 及び 1 を格納するのに十分な大きさをもつ」領域であり、そこをchar*でキャストして書き込んでるんだから未定義動作だしょ。
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
コンピュータは旧約聖書の神に似ている、規則は多く、慈悲は無い -- Joseph Campbell
発端? (スコア:3, 参考になる)
きっかけはこのおもしろい(オブラートに包んだ表現)ツイートではないかな
https://twitter.com/fnya/status/1192036095820615680 [twitter.com]
Re: (スコア:0)
return (条件)? true : false; なんて書くくらいなら return 条件; だよなあ
そりゃレビューで落とすでしょ感
Re: (スコア:0)
それを可読性が落ちると言ってつっぱねたというのがすごい。
? true : false
がついている方が読みにくいと超個人的には思うけどね。
Re: (スコア:0)
俺も、ゴミつけたら読み難いとしか思えないが、読み易い読み難いってのは個人の感性というか感想だから仕方ないのだろう。
とはいえ自分に都合がよいからといって、一般的でないことやって読み難いから止めろと言われても、つっぱねるってのは、エンジニアを仕事にするの向いてないというか、チームに存在するだけで迷惑な奴ってことだから仕事変えて趣味だけに留めるべきだろうな。
https://twitter.com/fnya/status/1192039284821250048 [twitter.com]
別ツイートで、こんなことも言ってるから、つまみぐい的にプログラム書いてきて、そもそものプログラムへの理解が乏しいようだから、自分の能力不足を改善せずに目先の問題回避してきた結果、そうしないと困ってるのかもね。
そのあたりも思考方向がエンジニア向きじゃなさそう。
Re: (スコア:2, 参考になる)
TokusiN @toku51n 11月6日
返信先: @fnyaさん
trueとの比較は危険なのでやってはいけない。もしどうしてもbool型との比較が必要なのであれば!=falseにしなければいけない。
1件の返信 2件のリツイート 10 いいね
fnya@Web/Mobileアプリ構築中 @fnya 11月6日
危険というのは、PHPやJavaScriptでオブジェクトがtrue判定されることですか?
1件の返信 0件のリツイート 0 いいね
TokusiN @toku51n 11月6日
いえ、trueと評価されるべきものがfalse判定されることがあります。
1件の返信 0件のリツ
Re: (スコア:0)
みんな分かってると思うけど補足。
!= false と書くべきって理由は、false 、true は値としては 0 、1 になるってところ。
そこに 2 とか 3 とかの値が来たときにどう動くのか、それを考えろってこと。
0 、1 以外は想定外? それならそれを保証しろ、と。ドキュメントとか assert() とかでも良いけど、実環境の実行時には無力。
あと、ツイートの「条件式だけで動作する」ってやつは「式の値」だと思うけど、C 特有で分かりにくいとは思う。「副作用」もあるだろうし。
Re: (スコア:0)
!= false と書くべきって理由は、false 、true は値としては 0 、1 になるってところ。
そこに 2 とか 3 とかの値が来たときにどう動くのか、それを考えろってこと。
0 、1 以外は想定外? それならそれを保証しろ、と。ドキュメントとか assert() とかでも良いけど、実環境の実行時には無力。
_Bool は 0 か 1 以外の値取り様ないだろアホか
Re: (スコア:0)
少なくとも C の仕様だと _Bool が 0と1が保持できることは保証してるけど、 0 と 1しか値ととらないことは保証してないよ。
Re: (スコア:0)
https://kikakurui.com/x3/X3010-2003-01.html [kikakurui.com]
> 6.3.1.2論理型 任意のスカラ値を_Bool 型に変換する場合,その値が 0 に等しい場合は結果は 0 とし,それ以外の場合は 1 とする。
とあるけども、0 と 1 以外の値を取らせる方法教えてPLZ
Re: (スコア:0)
Re: (スコア:0)
「0 と 1 以外の値を取らせる方法」の意味が理解できない池沼は無理しなくて良いよw
Re: (スコア:0)
Cなんだから、アドレスとってメモリ書き換えればいくらでも書き換えられるよ?
Re: (スコア:0)
未定義動作挙げる意図が分からん
Re: (スコア:0)
どこに未定義動作が?
bool型変数のアドレスを取ること?
アドレスをchar*型にキャストすること?
char*型変数で受けること?
アドレスのメモリに任意の値を放り込むこと?
Re:発端? (スコア:0)
Re: (スコア:0)
どんなバイナリ吐いてるんだろう...
Re: (スコア:0)
gccがおかしいだけなような気がする
https://godbolt.org/z/ZyKjvX [godbolt.org]
「型_Bool として宣言されたオブジェクトは,値 0 及び 1 を格納するのに十分な大きさをもつ」領域であり、そこをchar*でキャストして書き込んでるんだから未定義動作だしょ。