Submit Search
null使ったら負け東京版
10 likes
5,200 views
なおき きしだ
1 of 27
Download now
Download to read offline
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
More Related Content
ODP
(define)なしで再帰関数を定義する
blackenedgold
PPTX
IJPC2015 D問題解説
yokozuna57
PPTX
JavaScript入門勉強会ー第四章
mactkg
PDF
null使ったら負け福岡版
なおき きしだ
PDF
Lt8 JavaScriptで配列をコピーする
Shingo Inoue
ODP
Real World OCamlを読んでLispと協調してみた
blackenedgold
PDF
ICFP2009-いかにして我々は戦ったか
ina job
PDF
Lispmeetup #53 PythonベースのLisp方言、 Hyのすすめ
Satoshi imai
(define)なしで再帰関数を定義する
blackenedgold
IJPC2015 D問題解説
yokozuna57
JavaScript入門勉強会ー第四章
mactkg
null使ったら負け福岡版
なおき きしだ
Lt8 JavaScriptで配列をコピーする
Shingo Inoue
Real World OCamlを読んでLispと協調してみた
blackenedgold
ICFP2009-いかにして我々は戦ったか
ina job
Lispmeetup #53 PythonベースのLisp方言、 Hyのすすめ
Satoshi imai
Viewers also liked
(11)
PDF
だれも教えてくれないJavaの世界。 あと、ぼくが会社員になったわけ。
なおき きしだ
PDF
コンピューティングとJava~なにわTECH道
なおき きしだ
PDF
これからのコンピューティングの変化とJava-JJUG CCC 2015 Fall
なおき きしだ
PDF
JavaOne2016報告
なおき きしだ
PPTX
乱数のたのしい話
なおき きしだ
PDF
職業人講和20141008
なおき きしだ
PDF
プログラマは何を勉強するか
なおき きしだ
PPTX
ぼくの実装した最弱のディープラーニング
なおき きしだ
PDF
デキるプログラマだけが知っているコードレビュー7つの秘訣
Masahiro Nishimi
PDF
オブジェクト指向エクササイズのススメ
Yoji Kanno
PDF
オブジェクト指向やめましょう
なおき きしだ
だれも教えてくれないJavaの世界。 あと、ぼくが会社員になったわけ。
なおき きしだ
コンピューティングとJava~なにわTECH道
なおき きしだ
これからのコンピューティングの変化とJava-JJUG CCC 2015 Fall
なおき きしだ
JavaOne2016報告
なおき きしだ
乱数のたのしい話
なおき きしだ
職業人講和20141008
なおき きしだ
プログラマは何を勉強するか
なおき きしだ
ぼくの実装した最弱のディープラーニング
なおき きしだ
デキるプログラマだけが知っているコードレビュー7つの秘訣
Masahiro Nishimi
オブジェクト指向エクササイズのススメ
Yoji Kanno
オブジェクト指向やめましょう
なおき きしだ
Ad
More from なおき きしだ
(20)
PDF
GraalVMの紹介とTruffleでPHPぽい言語を実装したら爆速だった話
なおき きしだ
PDF
GraalVM at Fukuoka LT
なおき きしだ
PDF
これからのコンピューティングの変化とこれからのプログラミング in 福岡 2018/12/8
なおき きしだ
PDF
GraalVMについて
なおき きしだ
PDF
VRカメラが楽しいのでブラウザで見たくなった話
なおき きしだ
PDF
最近のJava事情
なおき きしだ
PDF
怖いコードの話 2018/7/18
なおき きしだ
PDF
Java新機能観察日記 - JJUGナイトセミナー
なおき きしだ
PDF
プログラマになるためになにを勉強するか at 九州学生エンジニアLT大会
なおき きしだ
PDF
これからのコンピューティングの変化とこれからのプログラミング at 広島
なおき きしだ
PDF
Summary of JDK10 and What will come into JDK11
なおき きしだ
PDF
Summary of JDK10 and What will come into JDK11
なおき きしだ
PDF
Java10 and Java11 at JJUG CCC 2018 Spr
なおき きしだ
PPTX
New thing in JDK10 even that scala-er should know
なおき きしだ
PPTX
Java Release Model (on Scala Matsuri)
なおき きしだ
PDF
これからのJava言語と実行環境
なおき きしだ
PDF
JavaOne報告2017
なおき きしだ
PDF
JavaOne2017で感じた、Javaのいまと未来 in 大阪
なおき きしだ
PDF
Java8 コーディングベストプラクティス and NetBeansのメモリログから...
なおき きしだ
PDF
NetBeansのメモリ使用ログから機械学習できしだが働いてるかどうか判定する
なおき きしだ
GraalVMの紹介とTruffleでPHPぽい言語を実装したら爆速だった話
なおき きしだ
GraalVM at Fukuoka LT
なおき きしだ
これからのコンピューティングの変化とこれからのプログラミング in 福岡 2018/12/8
なおき きしだ
GraalVMについて
なおき きしだ
VRカメラが楽しいのでブラウザで見たくなった話
なおき きしだ
最近のJava事情
なおき きしだ
怖いコードの話 2018/7/18
なおき きしだ
Java新機能観察日記 - JJUGナイトセミナー
なおき きしだ
プログラマになるためになにを勉強するか at 九州学生エンジニアLT大会
なおき きしだ
これからのコンピューティングの変化とこれからのプログラミング at 広島
なおき きしだ
Summary of JDK10 and What will come into JDK11
なおき きしだ
Summary of JDK10 and What will come into JDK11
なおき きしだ
Java10 and Java11 at JJUG CCC 2018 Spr
なおき きしだ
New thing in JDK10 even that scala-er should know
なおき きしだ
Java Release Model (on Scala Matsuri)
なおき きしだ
これからのJava言語と実行環境
なおき きしだ
JavaOne報告2017
なおき きしだ
JavaOne2017で感じた、Javaのいまと未来 in 大阪
なおき きしだ
Java8 コーディングベストプラクティス and NetBeansのメモリログから...
なおき きしだ
NetBeansのメモリ使用ログから機械学習できしだが働いてるかどうか判定する
なおき きしだ
Ad
null使ったら負け東京版
3.
null書いたら負け ● Streamはコーディング規約で禁止でもいい ● Date
and Timeはよくわからない
7.
Optionalとは ● java.util.Optional<T> ● ScalaでいうOption ●
HaskellでいうMaybe ● 値をもつかもたないか
8.
Optionalを用意する ● 値がある Optional.of(str) – nullを渡すとぬるぽ ●
値がない Optional.empty() ● 値があるかどうかわからない Optional.ofNullable(str)
9.
値があるかどうか判定する if(ostr.isPresent()){ System.out.println(ostr.get()); } ● isPresent
10.
別の値に変換する ● map Optional<String> ostr
= Optional.of(str); ostr.map(String::length) .ifPresent(System.out::println);
11.
モナド! ● nullのある世界とない世界の分離
12.
nullを使っていいところ悪いところ ● ローカル変数 ○ ●
引数 △ ● フィールド × ● 戻り値 ×
13.
Java8のほかの作法 ● Streamでの注意 ● メソッド参照とラムダの使い分け ●
遅延実行をいかす ● Mapを活用する ● 制御構造を自作する
14.
Streamでの注意 ● 副作用に気をつける
15.
副作用に気をつける ● 副作用を使う基準 – 中間操作
× – 終端操作 ● reduce △ ● forEach ○
16.
遅延実行をいかす ● 値が使われる可能性の低い引数の構築に時間がか かるとき ● Logger ●
Optional – Optional#orElseGet – Optional#orElseThrow logger.debug(bigObject.toString()); logger.fine(() -> bigObject.toString());
17.
Mapを活用する ● Map<?, LIst<?>> ●
メモ化
18.
Map<?, List<?>> ● 追加 –
Map#computeIfAbsent ● 削除 – Map#computeIfPresent modifiedTuples.computeIfPresent(mt.oldtuple.rid, (rid, list) -> { list.remove(mt); return list.isEmpty() ? null : list; }); modifiedTuples.computeIfAbsent(mt.oldtuple.rid, rid -> new LinkedList()).push(mt);
19.
メモ化 ● Map#computeIfAbsent – 値があればその値、なければ計算を行って結果を Mapに格納しつつ返す。
20.
制御構造を自作する ● カスタムwith ● カスタム分岐 ●
カスタムループ
21.
カスタムwith ● try-with-resource public static
void withTran(Transaction tx, Runnable proc){ try{ proc.run(); tx.commit(); }catch(Exception ex){ tx.rollback(); } } withTran(tx, () -> { // Databaseアクセス! });
22.
カスタム分岐 ● パターンマッチ – 型安全なオブジェクトごとの操作と分解 http://d.hatena.ne.jp/nowokay/20131212#1386820115
23.
カスタムループ ● forEach ● zip
24.
zip ● ふたつのStreamをまとめる
25.
Pairとzip http://d.hatena.ne.jp/nowokay/20140321#1395371615 public static void
main(String[] args) { List<String> prefs = Arrays.asList("ほっかいどう", "ちば", "とうきょう", "しが", "やまぐち", "さが", "みやざき"); StreamUtils.zip( IntStream.iterate(1, SUCC).boxed(), prefs.stream().filter(s -> s.length() <= 2)) .forEach(p -> System.out.printf( "%d:%s%n", p.left, p.right)); }
26.
メソッド参照とラムダの使い分け ● メソッド参照は引数を隠す ● 読み解くのにコンテキスト理解が必要 –
メソッドに渡すためのメソッド ○ – 引数ひとつのメソッド △ – 引数複数のメソッド ×
27.
Java8の弱点 ● 型推論が案外弱い http://d.hatena.ne.jp/nowokay/20140107#1389093206
Download