冗長なif文が作られる理由諸説

booleanを返すケースで冗長なif文が作られるのは何故かというのをツイートしてみたら、多くの反響があったのでまとめてみました。
43
ゆうすけ@iOSアプリ開発 @U_su_K

SwiftUI ButtonStyleでisEnabledの取得について調べました。 zenn.dev/usk2000/articl… #SwiftUI

2021-06-09 10:47:36
kmizu @kmizu

関係ない話題。初学者のみならず、仕事でコード書いてる人でも、 if(isEnabled) { return true; } else { return else; } と書いちゃう人と時々遭遇するのだけど、これはなんでなんだろう。 ↓

2021-06-17 00:13:47
kmizu @kmizu

true/falseの二値を返すということは、当該関数がbooleanを返り値としてを期待しているというのは理解している……と思えるのだけど、しかし、理解していれば、 return isEnabled; になるはず。 ↓

2021-06-17 00:13:47
kmizu @kmizu

一つありえる仮説としては、そういう人はreturnには即値しか書けないと思い込んでるとか?しかし、そういう人でもreturn 変数名;とかは書いてたりするんだよなあ。 boolean型の変数だけが何か特別であると思いこんでいる?この種のコードに時々遭遇する理由がわからない(初学者の場合はわかる)。

2021-06-17 00:13:47
dif_engine @dif_engine

@kmizu printf デバッグの名残で(結果として)こうなってしまった記憶があります.

2021-06-17 00:16:20
いせきさん@4月末あたりまで減量 @take2webservice

@kmizu boolean型の変数が(条件分岐などで使えて)特別であると思い込んでるに1表! それが手癖になって抜けない人がちょいちょいいる感じでしょうかー (僕自身そんな感じだった気がします)

2021-06-17 00:17:33
Takashi Kawasaki @espresso3389

とはいえ、こういうのはIDEの支援機能で潰していくべきだな。 twitter.com/kmizu/status/1…

2021-06-17 00:20:43
がくぞ @gakuzzzz

@kmizu 日本語ドキュメント直訳論を提出しておきます twitter.com/gakuzzzz/statu…

2021-06-17 00:21:04
がくぞ @gakuzzzz

わりと旧き良き詳細設計書(?)なるものに「集合 A に B が含まれていたらtrueを返し、そうでなければfalseを返す」みたいに書かれてたら、素直に if (setA.contains(B)) { return true; } else { return false; } と書いてしまう心の清らかな人は結構いるのですよ twitter.com/Kory__3/status…

2018-02-22 05:27:39
oxyの蕎麦 @oxycaster

@kmizu 僕も昔書きがちでしたが、isEnabledの時とそうでない時の処理を挟むつもりで書き出してとりあえず書きはじめたけど、周辺を整理したらそこでは必要なくなり…みたいな時に消すのを億劫がってそのままにしちゃったりは…w

2021-06-17 00:21:08
hrsh7th @hrsh7th

@kmizu 脳内の日本語を書き下してるのだと思います。(自分も気持ちはわからんでもないです。) 「〜が有効なら true を返す」という文がコードになったものです。

2021-06-17 00:21:30
ビビ@Τwitter @strategic_vivi

@gakuzzzz @kmizu 僕もこれだと思います(;´∀`) 日本語直訳論

2021-06-17 00:22:47
市川 真一 @tenpoku1000

@kmizu C で bool 型を返す関数を書いていると、関数の返り値を変数に保存しないケースが頻出することがあるので、以下のように書いています。変数に保存して分岐などする場合は、変数を返すようにしています: if ( ! function_B()){ return false; } return true;

2021-06-17 00:23:53
KOIZUKA Akihiko @koizuka

@dif_engine @kmizu ああ、片方の値の時にデバッガのブレークポイントを設置する目的でもそういうことやった時代はあるな〜(値条件ブレークがないような時代)

2021-06-17 00:24:31
がくぞ @gakuzzzz

これ数学ガールの最近の連載でもこう書かれてるんですよね。結城先生の事だから意図的にそちらの方がわかりやすいという判断をされたんだろうなーと思いつつ、なぜその方がわかりやすいと判断されたのかはまだ自分の中で解を見出だせてない twitter.com/kmizu/status/1…

2021-06-17 00:24:44
だるやなぎのレバーは加熱しろ @daruyanagi

最近の IDE なら直してくれるよなって思ったけど、そもそも IDE 使わないか twitter.com/kmizu/status/1…

2021-06-17 00:27:50
アズなんとかさん @as_capabl

@kmizu if(isEnabled) と書ける人も実は思ったほど多くなくて、「ifの中には条件演算子がないとダメ」という認識がはびこっている可能性がが

2021-06-17 00:31:20
LQ @0xlqfc

@kmizu レビューされて気づいたことが過去に数回あります 理由はreturn isEnabledで成立するコードって滅多に遭遇せず不慣れだったからです 前者のif elseのパターンの方が頻出フレーズなので無意識レベルで書きあげていました

2021-06-17 00:32:54
すとまと @stmtk_yu

JSでisEnableが真偽値じゃないけど、返り値は真偽値にしたい的な? !!isEnableって書けば済む話だけど twitter.com/kmizu/status/1…

2021-06-17 00:34:12
Takeshi YAMAZAKI (TAKE) @tymzk7

レビューでこれ出てきて直させた側の人間だけど、「設計書の決定表とコードを見比べた時にこの方が分かりやすいと思ったのでこうしました」と言われた記憶(どういう意図かはちょっとよく分からなかった) twitter.com/kmizu/status/1…

2021-06-17 00:35:56
azu @azu_re

return isEnabledは使ってるエディタと相関ありそう

2021-06-17 00:36:56
sarubo @sarubo2016

isEnabled(何の値が入るかわからない。とりあえず値があるか確認)

2021-06-17 00:39:18
y2_naranja@🍊ナランハ#CtrlZ @y2_naranja

else のところ、return false; だよね……? そうでなかったら破壊的にどうしようもない twitter.com/kmizu/status/1…

2021-06-17 00:40:17
kenichiuda @kenichiuda

ここまでのは無いが、 bool isDisabled() { if(isEnabled == false) return true; else return false; } は稀によく見る。 インタビューしたわけではないが、恐らく頭の中では「isEnabledの逆」とは考えず「isEnabledが偽なら真、それ以外なら偽」と考えている。 twitter.com/kmizu/status/1…

2021-06-17 00:40:29
1 ・・ 6 次へ