ルールズ・オブ・プログラミング読書会vol.23
https://scrapbox.io/files/655372c161a776001bf71cc6.jpeg
開催日時
2024年11月12日(火) 19:30~21:00
開催URL
参加人数
4人
ウォーミングアップ
ルール10
C++はすぐ複雑になりがち
この手の話で思い浮かぶもの
ソートアルゴリズム
ソート済みになればアルゴリズムは気にしなくていい
計算量は気にしなくていいの?
計算量は広義の外部インタフェースとして公開されている
アルゴリズムではなくソースコードの中身を気にしなくていいというほうが正確
コンパイラの中身
ファイルを渡せば実行ファイルができれば中身は知らなくていい
単純な例
サイン関数とコサイン関数
acosの1付近は誤差が大きくなる
内部にある詳細の隠蔽
有効性チェックが複雑性
これ有効性範囲チェック逆だよね?
code: cpp
if (m_validFrom >= currentDate &&
m_validUntil <= currentDate &&
Fromの方が大きいのであれば正しいが、たいてい英文的にFromの方が小さいはず
FromとUntilが同じ日付ならtrueになるし・・・(震え声)
code: cpp
while((c = getchar()) != EOF) {
}
状態の分散と、複雑性
このPlayerクラスはビルドエラーになる
インタフェースはOnSpotted,OnLostSightだが、overrideしているのはonSpotted,onLostSight
本筋の部分に集中させてほしい
有力化されているか?
次回ここから
お悩み雑談室
継承関係を含んだ型のスマートポインタについて
code: cpp
std::unique_ptr<Base> ptr = std::make_unique<Derived>(); // コンパイルエラーになりそうでならなかった!
std::shared_ptr<Base> ptr = std::make_shared<Derived>(); // 期待した通りに動く