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

コメント

みなか🍭™ @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みたいに構文レベルでサポートしてくれないと使いにくいよね。

カテゴリーからまとめを探す

「Java関連」に関連するカテゴリー

ログインして広告を非表示にする
ログインして広告を非表示にする