2
2

More than 3 years have passed since last update.

クラス、メソッド、インスタンス変数の関係と命名(オブジェクト指向)

Last updated at Posted at 2020-11-24

前提

クラス

クラスはオブジェクトであり、概念。

メソッド

メソッドはクラス(オブジェクト)の振る舞い。

インスタンス変数

インスタンス変数はクラスの属性、性質、状態を表すもの。

良い命名とは

基本的には「クラス名+メソッド名」と並べた際に英語として適切であれば良い命名だといえる。
つまり基本はクラスが主語、メソッドが述語の関係。
もしくはクラスを操作対象のオブジェクトとみなした際の、命令形にしたときの対象となる。

例えば「モンスター」クラスに「攻撃する」というメソッドがあれば

class Monster
  def attack
  end
end

monster = Monster.new
monster.attack
# モンスターは攻撃する
# モンスターよ、攻撃しろ!

のように命名すると良い。

命名を考える際に気をつけること

関係性を理解し言葉にできるか

あるオブジェクトの振る舞いがメソッドで、その構成要素/属性/性質がインスタンス変数。この関係性をまずは理解する。

そして対象のモノ(物事、概念、その他オブジェクト)がどんな物なのかを的確にイメージし、それを言葉にする。
そしてそれは「誰がみてもそう」という妥当性が重要となる。

つまりクラス名を見たときに、このクラスの内容を想像することができるかを常に想像すること。
この際、Informationやdataなどの抽象度の高い命名はできるだけ避けるようにする。

オブジェクト↔メソッドを互いに想像できるか

「名前(クラス、オブジェクト)からその内容(メソッド、インスタンス変数)を想像できること」「内容からその名前を想像できること」どちらも考える必要がある。
するとメソッドやインスタンス変数が適切であるかもそこから見えてくる。

よって良い変数名、メソッド名、クラス名というのは名前がその中身を正しく表しているといえる。
そしてその内容こそがそのクラス(オブジェクト)の責務と呼ばれるものになりうる。

2
2
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2