Open5

【SOLID原則】"単一責任の原則 (single-responsibility principle)"の勉強会後の振り返り

阿部耕二阿部耕二

このページは何?

2023/7/20(木)に実施する社内勉強会、2023/7/21(金)に実施するTwitterスペース 【SOLID原則】"単一責任の原則 (single-responsibility principle)"

  • 気づき
  • 感想
  • 質問
  • より良い設計の案(いやいや私だったらこう設計するよ、その理由はxxだから)
  • その他

などイベント後の振り返り、学びを深めるために作成しました。ぜひ、自分以外の設計の視点を得るために有効活用してください。

対象テーマの説明

趣味で開発した連射測定ゲームをテーマにします。

連射測定ゲームとは???
私の少年時代の1980年後半に流行ったシュウォッチをマイコンボードで再現したもの。

動画はこちら
https://www.youtube.com/shorts/THw-DGGBeK4

勉強会資料はこちらです。

ソースコード

クソコード(設計改善前)

https://github.com/grace2riku/spresense_game/releases/tag/tag_srp_ng_230720

モデルは下図

改善後のコード(未完成で実機での動作確認に至っていない)

https://github.com/grace2riku/spresense_game/releases/tag/tag_srp_ok_230720

モデルは下図

投稿ルール

  • クソコードを憎んで人を憎まず、個人に対しての誹謗中傷の書き込みはやめてください。
  • より良い設計の案を提示いただける場合、なぜそのような設計が良いのか お手数ですが理由を書いてください。それが読む人に非常に価値のある学びになります。
阿部耕二阿部耕二

気づき・感想

動的な観点からも見る -> 2023/7/24 追記

社内勉強会、Twitterスペースでクラス図を見ていただいたとき、処理の流れが一目で把握できずに質問いただいたことがあった。

例)

  • initilizeモジュールのinitilizeメソッド。どういうメソッドか?どういう経路で初期化が行われるのか?

クラス図だけで処理の流れが想像できればベストだが、難しいときは

  • コラボレーション図
  • 状態遷移図
  • シーケンス図

などの動的な視点の設計図を使うと良いのではないか?、と思った。
動的な設計図を書き始める前に属性の名前・メソッドの名前により良い名前にすることに気をつかうことも大事だとは思った。