Upgrade to Pro — share decks privately, control downloads, hide ads and more …

アカツキLT_2022_02_24..pdf

akatsukinewgrad
May 19, 2022
650

 アカツキLT_2022_02_24..pdf

akatsukinewgrad

May 19, 2022
Tweet

Transcript

  1. [初心者向け]破滅的なコードを書かない
    ために意識したい3つのこと +α
    さとう/sakastudio

    View full-size slide

  2. 自己紹介
    北海道情報大学3年
    23卒アカツキ内定
    Twitter @sakastudio_
    オープンソースで工業ゲーを開発中

    View full-size slide

  3. 意識したい3つのこと + α
    ・一つのクラスは150行以内に収める
    ・循環参照はしない
    ・継承はしない
    ・テストコードを書こう

    View full-size slide

  4. 同じ内容をQiitaで書いてます
    こっちの方が詳しい説明があるので、興味があれば是非
    そのまんまだとアレなので+αします

    View full-size slide

  5. 一つのクラスは150行以内に収める
    1000行クラス、書いてないですか?
    ・1000行あると単純に読みづらい
    ・様々な関数や変数が相互作用してて処理を追いづらい
    ・一箇所直すと他の場所がバグるなんてことも…
    →そんなら行数で制限しちゃった方が楽

    View full-size slide

  6. 150行以内だと何がいい?
    ・単一責任の原則を割と楽に守ることができる
    ・単一責任の原則を守るとそのクラスのやることが明
    確になり、読みやすくなる
    →単一責任の原則を守るようなコードを書こ
    う!

    View full-size slide

  7. 単一責任とはなんぞや?
    単一責任の原則とは
    (クラスを)変更するための理由が、一つのクラスに
    対して二つ以上あってはならない

    View full-size slide

  8. 単一責任とはなんぞや?
    ....なるほど?

    View full-size slide

  9. 単一責任とはなんぞや?
    つまり…
    一回の仕様変更に対してクラスを変更して
    いいのは一回まで

    View full-size slide

  10. 単一責任とはなんぞや?
    無料版はここまでです。
    これ以降は記事を読んでください。
    (本当は説明したいけど時間が時間なので)

    View full-size slide

  11. 循環参照はしない
    循環参照をすると…
    •循環参照によって処理が追いづらくなる
    •再利用性が失われ、拡張性が失われる
    •特別な仕様に対応しづらくなる

    View full-size slide

  12. よくある循環参照

    View full-size slide

  13. 何がダメか?
    新たな仕様に柔軟に対応できない
    ・通常ステージの他に、ボーナステージを実装する必要が出
    てきた
    ・ボーナスステージにPlayerManagerは必要ない
    →循環参照があるとどうなるか?

    View full-size slide

  14. 何がダメか?
    破滅的なコードの温床となる

    View full-size slide

  15. 循環参照の解決方法
    delgateやeventなどの言語機能を使いましょう

    View full-size slide

  16. 循環参照の解決方法
    無料版はここまでです。
    これ以降は記事を読んでください。
    (本当は説明したいけど時間が(ry )

    View full-size slide

  17. 継承はしない
    •継承をすると親クラスに処理が集中する
    •子クラス用の処理やバグ回避処理が親クラスにでき親
    クラスの複雑度が増す

    View full-size slide

  18. 継承はしない
    継承がダメな理由として、ミノ駆動さんの動画は
    非常にわかりやすいです

    View full-size slide

  19. 継承の解決方法
    ・継承ではなく合成を使う
    ・処理を別クラスに記述し、そのクラスに処理を転送

    View full-size slide

  20. 継承の解決方法
    無料版はここまでです。
    これ以降は記事を読んでください。
    (本当は説明(ry )

    View full-size slide

  21. テストコードを書こう
    というかTDDをしよう

    View full-size slide

  22. テストコードを書きTDDをすると
    •必然的にユニットテストを書きやすい設計≒良い設計 ができ
    るようになる
    •バグの早期発見、早期修正ができる
    •テストは基本ずっと使えるのでデグレを減らせる
    •モジュールの品質を高めることができる
    •自分が書いたコードに対して自信を持てる

    View full-size slide

  23. TDDの良くないところ
    •変更に時間がかかる
    •コードを書く量が大体2倍になる
    •クライアント側のテストは意外と大変

    View full-size slide