SlideShare uma empresa Scribd logo
1 de 16
良いクラスとは?
山﨑友弘
Railsを触っていて疑問に思ったことがあります。
「クラスメソッド多くね?」
こんな感じ
一つもプロパティを持ってないクラス
クラス名がただの名前空間と化してる!
もしかしたらRailsはこれでいいのかも
しれないが(Rails詳しくないので)
そもそもクラスがどうあるべ
きか知ってますか?
という話
今日のゴール
クラスの凝集度(強度)とクラスの結合度
を、コーディングのレベルで扱えるよ
うになる
凝集度とは
どれだけ単一の機能でまとまっている
か
凝集度が高い例
class 人{
float 体重;
float 身長;
float ウエスト;
void 食べる(量){
体重 += 量
身長 += 量
ウエスト += 量
}
}
class 人{
float 体重;
float 身長;
float ウエスト;
void 食べる(量){
体重 += 量
身長 += 量
ウエスト += 量
}
}
クラスメソッドを足してみた
class 人{
float 体重;
float 身長;
float ウエスト;
void 食べる(量){
体重 += 量
身長 += 量
ウエスト += 量
}
static int 平均寿命(){
return 80;
}
}
すっげービミョー
class 人{
float 体重;
float 身長;
float ウエスト;
void 食べる(量){
体重 += 量
身長 += 量
ウエスト += 量
}
static int 平均寿命(){
return 80;
}
}
人クラスに平均寿命があるのは間違
いではない気がするなーー
ウ〜〜ん
平均寿命を入れるとこの人クラスが
表しているものが大きくなりすぎな
い?
じゃあクラスメソッドで適切なもの
ってどんなもの?
そうなんです
クラスメソッドを定義するのって
すげームズイんです!!!
なのにRailsには至る所にめっ
ちゃアルーー
もう一度クラス設計見直してみては
ヽ(´∀`。)ノ

Mais conteúdo relacionado

Destaque

BETTEY BP Thesis-redacted
BETTEY BP Thesis-redactedBETTEY BP Thesis-redacted
BETTEY BP Thesis-redacted
Bryan Bettey
 
CV - Vinesh K. Rajan
CV - Vinesh K. RajanCV - Vinesh K. Rajan
CV - Vinesh K. Rajan
Vinesh Rajan
 
0513_HAN_final_project_Katherine_edited
0513_HAN_final_project_Katherine_edited0513_HAN_final_project_Katherine_edited
0513_HAN_final_project_Katherine_edited
Jasmine Ye Han
 

Destaque (14)

La incredulidad
La incredulidadLa incredulidad
La incredulidad
 
Términos de comunicación interactiva
Términos de comunicación interactivaTérminos de comunicación interactiva
Términos de comunicación interactiva
 
Ale tic trabajo 11
Ale tic trabajo 11Ale tic trabajo 11
Ale tic trabajo 11
 
applicant letter
applicant letterapplicant letter
applicant letter
 
Folleto 1
Folleto 1Folleto 1
Folleto 1
 
BETTEY BP Thesis-redacted
BETTEY BP Thesis-redactedBETTEY BP Thesis-redacted
BETTEY BP Thesis-redacted
 
CV - Vinesh K. Rajan
CV - Vinesh K. RajanCV - Vinesh K. Rajan
CV - Vinesh K. Rajan
 
0513_HAN_final_project_Katherine_edited
0513_HAN_final_project_Katherine_edited0513_HAN_final_project_Katherine_edited
0513_HAN_final_project_Katherine_edited
 
Présentation du guide de convention Mediaconstruct
Présentation du guide de convention MediaconstructPrésentation du guide de convention Mediaconstruct
Présentation du guide de convention Mediaconstruct
 
規格書で読むC++11のスレッド
規格書で読むC++11のスレッド規格書で読むC++11のスレッド
規格書で読むC++11のスレッド
 
C++の黒魔術
C++の黒魔術C++の黒魔術
C++の黒魔術
 
HUで6000万pvのトラフィックを捌くまでに起ったことをありのままに話すぜ
HUで6000万pvのトラフィックを捌くまでに起ったことをありのままに話すぜHUで6000万pvのトラフィックを捌くまでに起ったことをありのままに話すぜ
HUで6000万pvのトラフィックを捌くまでに起ったことをありのままに話すぜ
 
Ruby under the hood
Ruby   under the hoodRuby   under the hood
Ruby under the hood
 
マーケティング視点でのデザイン
マーケティング視点でのデザインマーケティング視点でのデザイン
マーケティング視点でのデザイン
 

Mais de basicinc_dev

Mais de basicinc_dev (16)

turbolinks攻略
turbolinks攻略turbolinks攻略
turbolinks攻略
 
AWS VPC ~インフラエンジニアへの道~
AWS VPC ~インフラエンジニアへの道~AWS VPC ~インフラエンジニアへの道~
AWS VPC ~インフラエンジニアへの道~
 
画像処理アルゴリズム入門とcanvas
画像処理アルゴリズム入門とcanvas画像処理アルゴリズム入門とcanvas
画像処理アルゴリズム入門とcanvas
 
メール送信におけるスパム認定のリスクと対策
メール送信におけるスパム認定のリスクと対策メール送信におけるスパム認定のリスクと対策
メール送信におけるスパム認定のリスクと対策
 
構造化データマークアップでステキな検索結果を手に入れる
構造化データマークアップでステキな検索結果を手に入れる構造化データマークアップでステキな検索結果を手に入れる
構造化データマークアップでステキな検索結果を手に入れる
 
Js初心者だった僕が武器を手に入れるまで ~ fall in love with react ~
Js初心者だった僕が武器を手に入れるまで ~ fall in love with react ~Js初心者だった僕が武器を手に入れるまで ~ fall in love with react ~
Js初心者だった僕が武器を手に入れるまで ~ fall in love with react ~
 
悪いRegexと良いregexと最良regex
悪いRegexと良いregexと最良regex悪いRegexと良いregexと最良regex
悪いRegexと良いregexと最良regex
 
Safe stringにgsubを実行できるように対応
Safe stringにgsubを実行できるように対応Safe stringにgsubを実行できるように対応
Safe stringにgsubを実行できるように対応
 
My sql viewに救われる(かもしれない)
My sql viewに救われる(かもしれない)My sql viewに救われる(かもしれない)
My sql viewに救われる(かもしれない)
 
川又康平 20160428
川又康平 20160428川又康平 20160428
川又康平 20160428
 
Zaru 20160428
Zaru 20160428Zaru 20160428
Zaru 20160428
 
Yamakado 20160428
Yamakado 20160428Yamakado 20160428
Yamakado 20160428
 
Have fun-with-ruby
Have fun-with-rubyHave fun-with-ruby
Have fun-with-ruby
 
君に届け!〜カテゴライズしたユーザーにメッセージを送る〜
君に届け!〜カテゴライズしたユーザーにメッセージを送る〜君に届け!〜カテゴライズしたユーザーにメッセージを送る〜
君に届け!〜カテゴライズしたユーザーにメッセージを送る〜
 
エンジニアがチームで数字を追って得たもの
エンジニアがチームで数字を追って得たものエンジニアがチームで数字を追って得たもの
エンジニアがチームで数字を追って得たもの
 
インフラ(Aws)覚えたいそんなあなたへ!
インフラ(Aws)覚えたいそんなあなたへ!インフラ(Aws)覚えたいそんなあなたへ!
インフラ(Aws)覚えたいそんなあなたへ!
 

Último

Último (7)

NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 

良いクラス設計とは?