ルールズ・オブ・プログラミング読書会vol.21
https://scrapbox.io/files/655372c161a776001bf71cc6.jpeg
開催日時
2024年10月8日(火) 19:30~21:00
開催URL
参加人数
8人
ウォーミングアップ
ルール9 集約可能なコードを書け
所見で理解できる例
ほんとに?
+=がオーバーロードされてない?forがマクロで置換されてたりしない?
穿った見方だがC++だとありうる
Windowsだとmin,maxがdefineで置換される
さすがにきつくはなってくる例
素数のリストを取得するコード
初見ではまずわからない
ジャグリングはキャッチするタイミングがわかってるがコードを読む場合はいつキャッチされるかわからない
下手なジャグラー
オーバーフローするだけならまだよい
メモリ破壊
眠くなる(フリーズ)
インテルのレジスタ名覚えられん
呼び出し規約も覚えられん
失敗を経験したときの気持ち
メモしておけばよかったというケースは多々ある
F12で定義にジャンプして情報をスタック
同時に見れないのがネック
Alt+F12でその場に出せる
いろんなメモする知見を披露
短期記憶の役割
複雑の数え方
循環的複雑度
昔からある概念
ネストが深くなったりすると複雑度が上がる
認知的複雑度
最近出た概念
ここがわかりやすかった
良いコード
集約可能なコード
もっと長い例
途中までは似たようなコードだったか最後やってくることがちょっとわかりにくかった
前半と後半で粒度が異なってる
適切な名前がついてわかりやすくなった
素数で割っていくか2から順番に割っていくか
どっちが早いか議論
結論:コンパイル時に計算すればよくね?
「抽象化」で正しい?
「説明」「サマリー」
サマリーが表せるなら関数にできる
ルール19にもっと賢い例が出てくる
出てきても覚えてられない
へんな分け方している
clearFlagsはgetPrimesの中で呼ぶべき
それ込めてツッコミ待ちな気もする
抽象化のコスト
コードをみて「ちょっとわからんな」と呟いた直後に「ちょっとはっきりしてきてる!」という文章が
何がわかりにくくしているんだろう
reduce
自明
長期記憶に入っている
4引数reduceの名前付けが下手くそ
T>Iter
D
func>accum
いちゃもんがすぎる
メソッドチェーンはいけ好かない
それをつなげて気持ちよくなってるだけだろと(※個人の感想です)
理解しやすくするために抽象化を用いる
次回ここから
お悩み雑談室
抽象化いつわかるんだろう
reduceが畳み込みと分かる人は一瞬で理解できる
初心者だとreduceと言われてもわからない
ただただこれだけ
https://scrapbox.io/files/67051f3cfa09cd001d5cdf73.jpg