ken1flanのブログ

自己紹介・最近やってることなどを書くつもりです。

「良いコード/悪いコードで学ぶ設計入門」読書会 第2回を開催しました

academist-reading.connpass.com

「良いコード/悪いコードで学ぶ設計入門」読書会 第2回 を開催しました。

みんなで書いたホワイトボード

2章のホワイトボード
(あとでFIXしたものを貼ります…!)

感想

2.1 省略せずに意図が伝わる名前を設計する

  • リファクタリングの初手で変数名をわかりやすく変えるのは、コードを理解する上でもよさそう
  • 開発の最初からちゃんと意味のある名前をつけられるとは限らない、という話が出ました。
    • ドメイン知識を最初から完璧に持っていることなんてムリだし、わかります。
    • とりあえず動くものを…と作るのが一番大事。
      • できたあとに、ちゃんと考え直せる時間をとれるか……………とれないときのほうが多いですよね……。
      • 今は人が超少ないので、メンテナンスしにくいコードはいれないように気をつけてますが……
  • リリース後にコードの変更をすることに、とても抵抗のある現場もありますよね……。

2.2 変数を使い回さない,目的ごとの変数を用意する

  • ループカウンタとかはスコープをちゃんと区切って使うようにします。
  • ちゃんと説明変数になってると、変な使いまわしをされにくくなりそう
  • 無駄な名前を増やすと混乱する、という話が出ました。
    • 目的とする値を作り上げるために、+= を少しずつ繰り返す…というやり方は自分もよくやります。
      • 例では嫌がってたけれど…
    • 再代入を機能としてしにくくしている言語も出てきているので…「しくじりやすい」ので避けよう、というのが最近の見解なのかも。

2.3 ベタ書きせず,意味のあるまとまりでメソッド化

  • 説明変数として抽出されてると、そのあとにメソッドにしやすそう
    • メソッド化は目的ごとの変数を用意するのとセット、という話が出ました。
      • わかるなぁ…という気持ち。
      • でも、引数なしのメソッドなら、そのままメソッドを変数のようにして使っちゃうかも。
  • 細かいものまで全部やっちゃうのかどうか、加減が難しい…という話も出ました。
    • テスト書こうとして、面倒くさそうになったときには必ず分割してます。
      • そこまでじゃなければ、作らないか、作ってもプライベートメソッドくらいにしてます。

2.4 関係し合うデータとロジックをクラスにまとめる

  • HitPointクラスは盛り上がりました。
    • damageとrecoverって、機能がそっくりなので、どうして分けることにしたのかしら…。
      • 実際のゲームだと、こんなに単純じゃないので、そうしたほうがよさそう感はありますが…この時点だと、意見が分かれそうです。
      • damageメソッドを使うと、HitPointのインスタンスが新たに生成されて戻ってくる…という仕様も直感的ではなく…
        • データクラスだからかなぁ…?
    • 今後も出てきそうなクラスなので、先を読むと方針的なものが見えてくるかもしれないので、楽しみにしてます。
  • リファクタリングは焦りすぎると壊してしまうので、一歩一歩がよさそう

    • 2.1から2.4へ一気に直したプルリクもらったら、差し戻しますもんね…。
  • コードの変えにくい現場もだったり、チームの練度が低かったり…そういうとき、著者さんはどんなふうに動かれるのか、ちょっと訊いてみたい気になりました。

  • HitPointクラスの実装の仕方は…まだこの時点だとこの実装だとモヤモヤします。先を期待してます!
  • 2.1から2.4のコードにジャンプアップするような変更は…NGですね。本のように順を追ってリファクタリングしないと、レビューがシンドいです。
  • ホワイトボードが付箋やスタンプで一杯、にぎやかでよかったです!
  • 今回もたくさんの学びがありました!

運営としてのふりかえり

KPT方式で。

Keep

  • 2回目来てくれた方が結構たくさん…!
    • 超嬉しい…!
  • 盛り上がりました!
    • 事前にたくさん書いてくれる方がいるおかげで、他の方もぼちぼち書いてくれている模様。
      • ありがたい感じです!
    • 積極的に参加してくださってる方が雰囲気を作ってくれているので、あとの方がついて来やすいと思われます。
    • 引き続き話しやすい雰囲気を作っていきたいです。

Problem

  • 初参加の方がいなかった…。
    • エントリーはあったんですが、ちょっと残念でした。
    • あとに進むに従って、参加するハードルが上がってくるので、どうしたものか…。

Try

  • 早めに先のイベントも作っておきます。
  • 初参加を歓迎、というような文言をイベントページや告知に足します。
  • ホワイトボードを公開します。

おわりに

参加してくれたみなさん、ありがとうございました! あとでざっと見直しても、一人で読むより圧倒的に気づくことが多いので、今後も継続してやっていきたいと思います!

参照