良いクラス設計とは?

16
良良良良良良良良良良良

Transcript of 良いクラス設計とは?

Page 1: 良いクラス設計とは?

良いクラスとは?

山 友弘﨑

Page 2: 良いクラス設計とは?

Railsを触っていて疑問に思ったことがあります。

Page 3: 良いクラス設計とは?

「クラスメソッド多くね?」

Page 4: 良いクラス設計とは?

こんな感じ

Page 5: 良いクラス設計とは?

一つもプロパティを持ってないクラス

Page 6: 良いクラス設計とは?

クラス名がただの名前空間と化してる!

Page 7: 良いクラス設計とは?

もしかしたら Railsはこれでいいのかもしれないが (Rails詳しくないので )

Page 8: 良いクラス設計とは?

そもそもクラスがどうあるべきか知ってますか?

という話

Page 9: 良いクラス設計とは?

今日のゴール

クラスの凝集度 (強度 )とクラスの結合度を、コーディングのレベルで扱えるようになる

Page 10: 良いクラス設計とは?

凝集度とは

どれだけ単一の機能でまとまっているか

Page 11: 良いクラス設計とは?

凝集度が高い例

class 人 { float 体重; float 身長 ; float ウエスト ;

void 食べる ( 量 ){ 体重 += 量 身長 += 量 ウエスト += 量 }}

Page 12: 良いクラス設計とは?

class 人 { float 体重; float 身長 ; float ウエスト ;

void 食べる ( 量 ){ 体重 += 量 身長 += 量 ウエスト += 量 }}

クラスメソッドを足してみた class 人 {

float 体重; float 身長 ; float ウエスト ;

void 食べる ( 量 ){ 体重 += 量 身長 += 量 ウエスト += 量 } static int 平均寿命(){ return 80; }}

Page 13: 良いクラス設計とは?

すっげービミョー

class 人 { float 体重; float 身長 ; float ウエスト ;

void 食べる ( 量 ){ 体重 += 量 身長 += 量 ウエスト += 量 } static int 平均寿命(){ return 80; }}

人クラスに平均寿命があるのは間違いではない気がするなーー

ウ〜〜ん

平均寿命を入れるとこの人クラスが表しているものが大きくなりす

ぎない?

じゃあクラスメソッドで適切なものってどんなもの?

Page 14: 良いクラス設計とは?

そうなんです

クラスメソッドを定義するのってすげームズイんです!!!

Page 15: 良いクラス設計とは?

なのに Railsには至る所にめっちゃアルーー

Page 16: 良いクラス設計とは?

もう一度クラス設計見直してみてはヽ (´∀ `。 )ノ