アカウント名:
パスワード:
きっかけはこのおもしろい(オブラートに包んだ表現)ツイートではないかな
https://twitter.com/fnya/status/1192036095820615680 [twitter.com]
return (条件)? true : false; なんて書くくらいなら return 条件; だよなあそりゃレビューで落とすでしょ感
return ok ? true : false;なら俺でも怒るがreturn b*b-4*a*c >= 0 ? true : false;なら怒らない
動的型付けだったり、型推論したりの場合はreturn f(x);よりreturn f(x) ? true : false;のことのほうがありがたい場合があるとくにf(x)を他人が定義していて、しかもtrueとfalse以外を帰す場合
とくにf(x)を他人が定義していて、しかもtrueとfalse以外を帰す場合
return (f(x)!=0);みたいに書けばいいと思う。
そこは
return !!f(x);
が様式美じゃない?
ゼロやnullじゃないってのはコメントがないとぱっと見では分からないけど、!!は瞬時にわかるしよく見かける(気がする)。
!!は二重否定だからプログラミング言語の意味論以外には、トートロジーでしかないプログラム上にトートロジーがあるとは普通は思わないから、これを!一つと見間違える可能性が出てくるつか、なんども煮え湯を飲まされたf(x) ? true : falseは見ての通り冗長だが、間違えようがない他人に見せないときは好きにしろ
!!って人生で10回も使った事無いと思うが、!!と!見間違えるか?見間違えるか、そうなのか。そうかもしれないな。まあ実際そんなに褒められた書き方じゃないと思ってるしな。
とはいえ ? true : falseは個人的には!!よりかなり許せないレベルなんだが、boolean型がある言語ならそれへのキャストなり変換関数なりがあるんじゃないかな。
一般論だが、間違えて思い込んでしまうと、そこから自力で抜け出すのは非常に難しい「!!」を実際に使う機会はおっしゃる通り少ないから、ロジックをあらかじめ知っていればともかく、他人のコードの「!!」は見間違えがちだそうなると、そこ「以外」を切り刻んで、最後の最後に「もしや…上様」となってしまう
俺も好きか嫌いかで言えば、?true:falseは好きではない何も計算していないからなしかし、止めてくれというほどの理由もないし、
return b*b-4*a*c >= 0 ? true ; false; は、素直に「bかけるbひく4かけるaかけるcが0以上の『とき』に、真を返す」と読み下せるが
return b*b-4*a*c
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
犯人は巨人ファンでA型で眼鏡をかけている -- あるハッカー
発端? (スコア:3, 参考になる)
きっかけはこのおもしろい(オブラートに包んだ表現)ツイートではないかな
https://twitter.com/fnya/status/1192036095820615680 [twitter.com]
Re: (スコア:0)
return (条件)? true : false; なんて書くくらいなら return 条件; だよなあ
そりゃレビューで落とすでしょ感
Re: (スコア:0)
return ok ? true : false;
なら俺でも怒るが
return b*b-4*a*c >= 0 ? true : false;
なら怒らない
Re: (スコア:0)
動的型付けだったり、型推論したりの場合は
return f(x);
より
return f(x) ? true : false;
のことのほうがありがたい場合がある
とくにf(x)を他人が定義していて、しかもtrueとfalse以外を帰す場合
Re: (スコア:1)
return (f(x)!=0);
みたいに書けばいいと思う。
Re: (スコア:0)
そこは
が様式美じゃない?
ゼロやnullじゃないってのはコメントがないとぱっと見では分からないけど、!!は瞬時にわかるしよく見かける(気がする)。
Re: (スコア:0)
!!は二重否定だからプログラミング言語の意味論以外には、トートロジーでしかない
プログラム上にトートロジーがあるとは普通は思わないから、これを!一つと見間違える可能性が出てくる
つか、なんども煮え湯を飲まされた
f(x) ? true : falseは見ての通り冗長だが、間違えようがない
他人に見せないときは好きにしろ
Re:発端? (スコア:0)
!!って人生で10回も使った事無いと思うが、!!と!見間違えるか?
見間違えるか、そうなのか。そうかもしれないな。まあ実際そんなに褒められた書き方じゃないと思ってるしな。
とはいえ ? true : falseは個人的には!!よりかなり許せないレベルなんだが、
boolean型がある言語ならそれへのキャストなり変換関数なりがあるんじゃないかな。
Re: (スコア:0)
一般論だが、間違えて思い込んでしまうと、そこから自力で抜け出すのは非常に難しい
「!!」を実際に使う機会はおっしゃる通り少ないから、ロジックをあらかじめ知っていればともかく、他人のコードの「!!」は見間違えがちだ
そうなると、そこ「以外」を切り刻んで、最後の最後に「もしや…上様」となってしまう
俺も好きか嫌いかで言えば、?true:falseは好きではない
何も計算していないからな
しかし、止めてくれというほどの理由もないし、
return b*b-4*a*c >= 0 ? true ; false;
は、素直に「bかけるbひく4かけるaかけるcが0以上の『とき』に、真を返す」と読み下せるが
return b*b-4*a*c