プログラミング
プログラミング
副作用と純粋関数
- 副作用とは
- 純粋関数とは
テストコード
- テストコードとは
- テストしやすいコード、テストしにくいコード
抽象化
- 振る舞いと実装
- 抽象化とは
- 実装ではなく振る舞いが同じコードをまとめる
- 抽象化のレベル
- 抽象化と継承
- ダック・タイピング
immutable と mutable
- immutable と mutable
- immutable なコレクション
- immutable なオブジェクト
型の恩恵を受ける
- 型は値が取りうる範囲を制限する
- 何をしているかを型を使って明示する
null の取り扱い
- null の問題
- NullPointerException
- null object
- Maybe モナド, Option モナド
- C# の null 安全
- TypeScript で null, undefined を安全に取り扱う方法
エラーの取り扱い
- エラーが発生した際の対応
- カスタムエラー型
- エラーの抽象度
例外
- 例外
- 独自の例外型を定義する
- catch すべき例外と、catch すべきで無い例外
- 例外の投げ方の指針
- 例外の問題点
Either モナド
- Error を表すデータ型
- Either モナド
- Either の連結
- do 記法
- パラメーターを持った列挙体
- エラーを表す型
- 例外との比較
ジェネリクスを持たない言語での手法
- 複数の値を返すための手法 (Tuple)
- エラーと値の両方を返す手法
- Go のエラー処理
- TypeScript のエラー処理
非同期処理
- 非同期処理とは
- 非同期処理の必要性
- コールバック関数
- JavaScript の Promise を利用したコールバックメソッドのチェーン
- 先物オブジェクト
- async, await
- 実行コンテキスト
- 排他制御の必要性
- アトミック操作
- ロック
- C# の lock 文
- Readers–writer lock