@gakuzzzz @kmizu 補足ですが、どちらかというと、MATCHEDの戻り値をtrue/falseにした方がよくなかったのだと思います。この言語の場合には<マッチした>/<マッチしなかった>を戻り値にした方が読みやすかったと思います。>自分
2021-06-17 07:02:25@gakuzzzz @kmizu 関連するパターンが同じWeb連載の第327回(最新回)にありました。SEARCH-SUBTREEの中で再帰的にSEARCH-SUBTREEを呼び出しています。これは戻り値が何になるか明解なので、if文を間にかませていない例ですね。 第327回 二分探索木(前編) link.hyuki.net/girlnote327 pic.twitter.com/j7QpkoQyqw
2021-06-17 07:14:03@hyuki @gakuzzzz @kmizu これですねー twitter.com/cactaceae/stat…
2021-06-17 07:21:08@kmizu SonarQubeで警告してくれるみたいですね rules.sonarsource.com/java/RSPEC-1126
2021-06-17 07:46:13isEnabledがtrueまたはfalseのどちらかであるなら同じですが、そうではない場合には同じ意味にならないですね。 twitter.com/kmizu/status/1…
2021-06-17 07:51:41関係ない話題。初学者のみならず、仕事でコード書いてる人でも、 if(isEnabled) { return true; } else { return else; } と書いちゃう人と時々遭遇するのだけど、これはなんでなんだろう。 ↓
2021-06-17 00:13:47@kawaiiseeker @kmizu なるほど、boolean->booleanな前置演算子 whether を導入したら、return whether isEnabled と書けて自然言語的にハッピーかもしれません。
2021-06-17 07:57:03perlみたいに return true if isEnabled. twitter.com/kawaiiseeker/s…
2021-06-17 08:04:12@kmizu 単純に自然言語に近いからだと思います if isEnabled return true ←英語 return isEnabled ←英語っぽくない
2021-06-17 00:51:36@kmizu 変数名をisXXXとした時点で動詞っぽくなるので、名詞的に使う(ような書き方になる)のが何か気持ち悪いという話なのかもしれませんね。他の方書いてるように英語っぽくないと。逆に、変数名がflagとかなら、 if (flag == true) xxxx とか return flag; とか書く人が多そう。
2021-06-17 08:15:18JavaScriptユーザーの場合、isEnabledが期待としてはBooleanなのだが、実際はundefinedだったりしてそれが伝播するのを嫌ってこう書くことはあり得る。 実際は return !!isEnabled や return Boolean(isEnabled) のほうがよいのだけど twitter.com/kmizu/status/1…
2021-06-17 08:53:34この冗長なコードと同じコードは return !!isEnabled; 二つの感嘆符がない場合、isEnabled が Boolean 以外の値だと、その値が返り値となる為、Boolean に変換する必要がある twitter.com/kmizu/status/1…
2021-06-17 08:55:07isEnabledの話について度々考えることがあったのは、もちろん、何がしかのポリシーに基づいてそうしているのなら、必ずしも否定出来ないけど、言語のセマンティクスを理解してない疑いがある人が割かし見られて、その点で問題視している、というのはあります。 ↓
2021-06-17 09:10:14言語のセマンティクスを理解してないというのは、たとえば、Javaであれば、boolean isEnabled = ...; に対して、 if(isEnabled) return true; else false; と return isEnabled; は等価になるという事を「理解していない」ケースですね。これは、経験の浅いプログラマーだとそこそこ見ます。
2021-06-17 09:10:14条件分とreturnで1つのブロックなら後で拡張するから、じゃダメなのかな。個人的にはisEnableとreturnのtrueが別の状態を参照してるのかなって疑うけど、その方が後々拡張するのかなーって。個人的にはこれで浅い深いで物差し測ると恥かきそう。 twitter.com/kmizu/status/1…
2021-06-17 09:12:37条件節が多いときは || や && で繋げるよりも if と early return で書いたほうが分かりやすかったりするので、あえてこうすることはあるな。 ログも差し込めるし。 twitter.com/kmizu/status/1…
2021-06-17 09:17:01そういえば、昨夜のあれは、言語は明記しなかったのが悪かったですが、Javaのつもりでしたね。その点、JSだとtrue/falseの二値に正規化するという主張は確かにありえる(リテラルでtrue/falseを持っているという点と、キャメルケースである点から)
2021-06-17 09:17:31で、そういうコードを見たときに、「このひとは理解した上でそうしている」のか、「言語のセマンティクスを理解していない」のか、判断にこまるケースがあるので、ややこしい問題だなあと思うのです。
2021-06-17 09:18:45これと同型の意見を複数拝見したので、素朴な疑問なのですが、結局、どっちで書こうが「内部実装の問題に過ぎない」ので、別の書き方をする意味がわかってないです。boolean get*isPossiblle()だとしても、私ならreturn isEnabled; をそのまま返します。 自然言語に一対一対応させると妙に見える❓ twitter.com/kurema_makoto/…
2021-06-17 09:24:28@kmizu 本来isEnabledと関数が返す型は別、という意識があるのではないかと。 例えば関数名がget*IsPossible()だとして、返してるのはPossibleかどうかであってEnabledかどうかではない。 機能がEnabledな場合にPossibleなだけ。 両者がbooleanであるのは利便性が目的で、表現する内容が同一だからではない。
2021-06-17 01:25:49@stb_nissie 実際に遭遇したケースだと、そもそも return isEnabled; が「可能であることが理解出来ていない」(return true/ return falseの形しか書けないと思い込んでいる)、といった事ですね。
2021-06-17 09:25:25@kmizu booleanを返す前に処理を追加する可能性があるときは、後で意図がわかるようにそんなふうに書いて止めてるんじゃないですか?🙄 本来ならコメントで対処しろよって話でしょうけどね。😝
2021-06-17 09:32:40私ならこうやって書く。 boolean getHogeIsPossible() { final boolean isPossible = isEnabled; return isPossible; }
2021-06-17 09:33:36