開始108日目〜超初心者、文系、30代のスタート〜 学んだこと追記4

オブジェクト指向

オブジェクト指向とは、複数のオブジェクトを組み合わせてプログラムを構築する考え方。

一つのテーマを持った集まり。

目的:開発者同士の円滑なコミュニケーションのために必要。

 

オブジェクト指向のメリット

・将来発生する面倒を避けることができる。

 

一朝一夕で身につけることはできません。この力を早く身につけられるように意識しながら日々の開発を進めていきましょう。

 

モデリング

 

ゲッターとは、あるクラスのインスタンスインスタンス変数の値を返すだけのメソッド

 

インスタンスは自身のインスタンス変数titleインスタンス変数feeの値を返す。

例)movieクラスのインスタンス.titleなどとすることで、それぞれの値を取り出せるようなる。

 

requireは、あるファイルから他のファイルの記述内容を参照するためのメソッド。

 

インスタンス変数の値を更新するためのインスタンスメソッドのことを、特別にセッター

 

インスタンスメソッドの中でselfと書くと、そのインスタンスメソッドを使っているインスタンス自身を参照できます。

ポイント:この実装はどのクラスが持つべきかということとどんな名前にするのかということ。

1.どのクラスが持つべきか、2.どんな名前にすべきか

 

attr_accessor:ゲッター、セッターを簡単に定義できるメソッド

例)class Dog

  attr_accessor :name, :type, :age

end

 

MVC

  • Controller
    • リクエストに応じて適切な処理を呼び出す
  • Model
  • View
    • 表示処理を行う

 

コード見通が悪くなる原因

・それぞれのクラスにその責務外の仕事をさせてしまうこと。

 

ビュー:

部分テンプレートとして切り出して使用する時の注意点は、「部分テンプレート内でインスタンス変数を使用しない」こと。

 

ビュー編:

  • app/controllers/concernsにファイルを追加し、必要箇所で読み込ませる
  • 親コントローラにメソッドを定義する

などの方法でコントローラの記述をうまく共通化すること

 

コントローラー編:

コントローラのコード量が多くなっている場合、本来モデルで行うべき処理がコントローラに書かれている可能性が高い。

 

モデル編:

様々な処理はモデルに集約されていくために、特にモデルは肥大化し易い傾向。

 

Decorator(デコレーター):

ビューとモデルの中間に位置し、モデルやビューなどに実装されやすい表示ロジックやフォーマットなどの責務を引き受けるクラス

gemの導入の仕方や細かい使い方に関してはgithubなどを参考

 

Validator(バリデーション):

データの整合性を保つために、データを検証する機能のこと

 

Callback(コールバック):

validationの直前に実行されるbefore_validationであったり、saveの直後に実行されるafter_saveなど様々なタイミングで実行される。