編集部が選ぶ「みんなに見てほしい」イチオシまとめはこちら
17
じゅくちょー Koichi Sakata @jyukutyo
Javaでメソッドの引数がOptional<Hoge>型のときでも、やっぱり引数のnullチェックいるよね…
たろう @ngsw_taro
@jyukutyo メソッドの仕様次第ですが基本的には不要だと思います
じゅくちょー Koichi Sakata @jyukutyo
@ngsw_taro 引数がOptionalだからnullは渡すなよーと呼び出し側に伝わるからでしょうか??
たろう @ngsw_taro
@jyukutyo 引数としてnullを期待しない仕様であると明示しているにも関わらずnullが渡ってきた(つまり事前条件が満たされていない)場合、メソッド使用者側に全責任があるからです
じゅくちょー Koichi Sakata @jyukutyo
@ngsw_taro なるほど、ありがとうございます!契約によるという感じですね。
たろう @ngsw_taro
@jyukutyo そうです!逆にnullをOptional.empty()と同様に扱う場合はそれを明記しないと混乱の元になりそうです
はるじっく @haljik
Optionalを引数に取らない理由としてはこれもあるなぁ。 基本的にはmapを使いって、非決定性を副作用の発生する水際まで非決定性を持ったまま扱う場面でしか使ってない twitter.com/jyukutyo/statu…
t_yano @t_yano
引数がOptionalであることで、メソッドを「使う側」がうれしい要素が見つからない
t_yano @t_yano
@t_yano 戻り値がOptionalであることでうれしい要素ってのはあるんだけど。
はるじっく @haljik
@haljik 日本語がだいぶおかしい…。非決定性を持ったものを、非決定性を保持したまま変換したりして副作用の水際まで運ぶ用途って言いたかった
t_yano @t_yano
OracleでJava作ってる人のブログかなんかでも、戻り値で使うもんであって引数には使わんって書いてた覚えがあるんだけど、URLみつからん
t_yano @t_yano
って話を毎回「ぜんぶOptionalにしろ」っていう人と話をしなければならず、非常にめんどくさいので、Effective Javaあたりでドドンって書いて欲しいなーと。
t_yano @t_yano
Optionalは、実装側が楽をするために利用側に余計な手間をかけさせるためにあるものではないはずだ。
Yuichi Sakuraba @skrb
@t_yano そういうことをJava SE 7/8 速攻入門に書きましたよ。 amazon.co.jp/dp/4774177385/
AOE Takashi @aoetk
@t_yano これですねー。Brian Goetzさん自らのコメントですね。 mail.openjdk.java.net/pipermail/jdk8…
じゅくちょー Koichi Sakata @jyukutyo
ちょっと恥ずかしく思いながらつぶやいた内容だったのだけれど、すごく知見が得られて、考えを教えてくださっているみなさんありがとうございます。 > 引数がOptional/Option
山本ユースケ @yusuke
@zephiransas @jyukutyo 「Optionalは引数が空になる可能性を示唆するためのものであって、他の目的での利用は一切意図していない」とOracleの中の人が断言してます → stackoverflow.com/questions/2454…
Takafumi Yoshida @zephiransas
@yusuke つまり引数としてのOptionalの利用は想定されていない・・・?
Takafumi Yoshida @zephiransas
It was never intended for Optional to be used other ways, such as for optional method arguments からは引数に使うな、って意味な気がする・・・
山本ユースケ @yusuke
@zephiransas はい、戻り値用に設計されたもので、引数やフィールドに使うものじゃない
Takafumi Yoshida @zephiransas
@yusuke よかった。自分の理解と合ってますw
Takafumi Yoshida @zephiransas
Optional引数については、レビュー時にホントに必要かどうか、吟味する必要がありそうですな
残りを読む(43)

コメント

孤高のSESエンジニア @mrmbackdoor 2015-11-20 22:01:57
VBかと思ったらJavaでもOptional使えるんだ
tomo🐧 @cocoatomo 2015-11-21 01:25:21
他の言語の機能をアレンジして取り入れるのは良いんだけど, 変に期待を持たせる名前にするのはあんまり良くなさそうだなぁ.
KIMURA, Sotaro @kimutansk 2015-11-21 09:53:17
JavaのOptionalに慣れてしまったので、ScalaでOptionを引数に与えて使いまわすというのがいまいちイメージできないんですよね・・・ 単一メソッド内でfor文で文脈もった値を元に判定し続けるくらいなら頭の中で処理が追いつくのでわかるのですが。
かつのり @k5n6 2015-11-21 12:00:37
Swiftみたいに構文レベルでサポートしてくれないと使いにくいよね。
ログインして広告を非表示にする
ログインして広告を非表示にする