[初心者向け]破滅的なコードを書かないために意識したい3つのこと +αさとう/sakastudio
View Slide
自己紹介北海道情報大学3年23卒アカツキ内定Twitter @sakastudio_オープンソースで工業ゲーを開発中
意識したい3つのこと + α・一つのクラスは150行以内に収める・循環参照はしない・継承はしない・テストコードを書こう
同じ内容をQiitaで書いてますこっちの方が詳しい説明があるので、興味があれば是非そのまんまだとアレなので+αします
一つのクラスは150行以内に収める1000行クラス、書いてないですか?・1000行あると単純に読みづらい・様々な関数や変数が相互作用してて処理を追いづらい・一箇所直すと他の場所がバグるなんてことも…→そんなら行数で制限しちゃった方が楽
150行以内だと何がいい?・単一責任の原則を割と楽に守ることができる・単一責任の原則を守るとそのクラスのやることが明確になり、読みやすくなる→単一責任の原則を守るようなコードを書こう!
単一責任とはなんぞや?単一責任の原則とは(クラスを)変更するための理由が、一つのクラスに対して二つ以上あってはならない
単一責任とはなんぞや?....なるほど?
単一責任とはなんぞや?つまり…一回の仕様変更に対してクラスを変更していいのは一回まで
単一責任とはなんぞや?無料版はここまでです。これ以降は記事を読んでください。(本当は説明したいけど時間が時間なので)
循環参照はしない循環参照をすると…•循環参照によって処理が追いづらくなる•再利用性が失われ、拡張性が失われる•特別な仕様に対応しづらくなる
よくある循環参照
何がダメか?新たな仕様に柔軟に対応できない・通常ステージの他に、ボーナステージを実装する必要が出てきた・ボーナスステージにPlayerManagerは必要ない→循環参照があるとどうなるか?
何がダメか?破滅的なコードの温床となる
循環参照の解決方法delgateやeventなどの言語機能を使いましょう
循環参照の解決方法無料版はここまでです。これ以降は記事を読んでください。(本当は説明したいけど時間が(ry )
継承はしない•継承をすると親クラスに処理が集中する•子クラス用の処理やバグ回避処理が親クラスにでき親クラスの複雑度が増す
継承はしない継承がダメな理由として、ミノ駆動さんの動画は非常にわかりやすいです
継承の解決方法・継承ではなく合成を使う・処理を別クラスに記述し、そのクラスに処理を転送
継承の解決方法無料版はここまでです。これ以降は記事を読んでください。(本当は説明(ry )
テストコードを書こうというかTDDをしよう
テストコードを書きTDDをすると•必然的にユニットテストを書きやすい設計≒良い設計 ができるようになる•バグの早期発見、早期修正ができる•テストは基本ずっと使えるのでデグレを減らせる•モジュールの品質を高めることができる•自分が書いたコードに対して自信を持てる
TDDの良くないところ•変更に時間がかかる•コードを書く量が大体2倍になる•クライアント側のテストは意外と大変