ルールズ・オブ・プログラミング読書会vol.19
https://scrapbox.io/files/655372c161a776001bf71cc6.jpeg
開催日時
2024年9月10日(火) 19:30~21:00
開催URL
参加人数
5人
ウォーミングアップ
ルール8 実行されていないコードは動作しない
川の例えが詩的
プログラミングの変遷が川の流れの変化としっくりきたのかな
歴史があるという意味では似ている
時間軸は全然違うけど
ソースコードは履歴が分からないケースがある
だからこそ歴史がわかるようなコードを書く必要がある
Personクラス
実にC++らしいコード
最初のコード
最初のコードの時点でいろいろ言いたいことがある
ソート前提で違う党派が来たら処理を打ち切るやり方
for文で高速化の可能性があるが最悪のケース(味方が一番後ろに固まっているケース)だと変わらない
党派ごとに連想配列にするとか他にもやりようある
findなんとか関数
この条件とこの条件とこの条件に合うPersonを返すfindなんとか関数
やってる内容自体はわかるがなぜこの内容でないといけないかがわかりにくくなる
200個とかあるのはさすがにやり過ぎだけど
第2段落:よくあるパターンの一般化
汎用的なfindPersons
findなんとか関数が3つできたので「ルール4」の一般化が可能になる
汎用化の良し悪し
findAlliesは見ただけでやりたいことが分かる
findPersonだとCONDの内容も見てみないとどういう対象が集まるのかが分かりにくくなる
汎用化したけどよく使われるのであれば特化したものを用意したくなる
要はバランスよねおじさん
findなんとか関数がずらっと並ぶのかIsなんとか構造体(CONDに入る呼び出し可能な何か)が別のところにずらっと並ぶのか
結局どこに寄せるかだけの話に見える
第3段落:変装機能の追加
nullptr
C++のキーワード
C++外の人からみるとこれが予約語なん!?ってなる
なんでpointerじゃないん?
生まれた時からnullptrだったC++erには違和感ない
なんならCのころには無かったので救世主
C++にあるpointerはすべてptr(例unique_ptr)
多分C++erはpointerの綴りをptrだと勘違いしている
findAllies()って削除したんじゃなかったの?
呼び出し側はFindPersonに置き換えたけどメンバ関数としては残ったままだったと思われる
置き換えた時点で消さなかったのが悪い
テスト
今回のケースだとテストをしていたとしても必ずしも不具合が見つかるわけではないケース
場合によってテストが通ったり通らなかったり
第4段階:因果応報
次回ここから(タイトルがすでに不穏)
お悩み雑談室
ここにきてようやくC++知らない弊害が出てきた
逆にここまで問題にならなかった
モダンなやり方
機能追加でどんどん出てくる
検索したら古いやり方ばっかでてくる
インターネット遺跡巡り
おなじみ阿部寛のホームページ
フレーム使用
あらゆるベンチマークと化してる
低速モード
高評価しかない
3文字ドメイン
フォントタグ使用
Shift JIS
愛生会病院