ルールズ・オブ・プログラミング読書会vol.22
https://scrapbox.io/files/655372c161a776001bf71cc6.jpeg
開催日時
2024年10月29日(火) 19:30~21:00
開催URL
参加人数
5人
ウォーミングアップ
ルール9 集約可能なコードを書け
理解しやすくするために抽象化を用いる
初心者にとって難しい機能を「他の人が知らないだろうから使うのやめよう」はよくない
教育して使えるようにする方向性で
ググって出てくる
のであれば市民権を得ていると言える
言語機能でサポートされているのであればなおさら
ちゃんと理解してなくても使えることの是非
中身を1行1行理解するまでは必要ない
ソートアルゴリズムの例
アルゴリズムの中まで知っている必要はない
ソートされることを知っていればよい
長期記憶の役割
sort関数がprocessVector()だとそれだけでprocessVector()が何者かという点で短期記憶を消費する
どれだけ早く長期記憶化できるか
条件付き長期記憶
前提がある長期記憶
processに共通理解がある環境であれば
共通知識は無料だが、新しい概念は高くつく
BitVector
ふるいを理解するのにこの中身を理解する必要ある?
この名前でBitVectorじゃない挙動をしようものなら「お前~」ってなる
ルール3を見直せってなる
標準のvector<bool>は特殊化されてメモリ効率はBitVectorと変わらない
BitVector何がよいの?
ひょっとして著者がstd::vector<bool>が特殊化されていることをご存じない・・・?
そう考えればこの流れは理解できる
中がstd::vectorに依存していないならばまだわかるけど中で使ってる
擁護するならstd::vector<bool>が初めのほうはメモリ効率がよくなかったのでは
できた当初からメモリ効率は良いです
(もう擁護できない・・・)
std::vector<bool>はここからここまで(複数フラグ)をオンにすることはできない
そういったことが実際のBitVectorではできるようになっているのかもしれない
が、本の中身からはうかがい知れない
すべてをまとめる
パイプライン記法の是非
同じことするのであれば関数記法よりパイプライン記法のほうが見やすい
けどC++でパイプライン記法を実現するにはプロキシが必要になりコンパイル時間が伸びてしまう
C++の秘境中の秘境
IOStreamで自作クラスをオーバーロードで表示できる
そこで記法を指定したくなった時にこの存在にたどり着いた
ルール10
次回ここから
お悩み雑談室
std::format文字列をパースするの面倒
このへんいい感じにパースするヘルパ関数が欲しい
知りませんか?
自作GoogleTestで出力