プログラミングには様々な概念や専門用語があるので、最初のうちは区別がつかず、あいまいな状態で悶々とすることも多いと思います。
今回は、関数とメソッドって何が違うの?という疑問に対して解説したいと思います。
関数とメソッドの違いは、フリーランスと社員の違い
関数は、呼び出し側から受け取った引数を使って何らかの処理を行い、その結果を呼び出し側に返すというものです。
メソッドも関数と同じく、呼び出し側から受け取った情報を使って何らかの処理を行い、結果を呼び出し側に返します。
そういう意味において、関数とメソッドは全く同じです。
違いは、クラスに属していているか否かです。
これは、会社に属して仕事をする人と、フリーランスとして仕事をする人に例えることができます。
特定の企業に属さないフリーランスは、必要なものを自分で賄いながら顧客と仕事をしますよね。
一方、会社に属している場合、会社の一員として会社の資源を使いながら仕事をすることになります。
全く同じことをするにしても、環境や立場が違うわけです。
プログラミングにおける関数は、一部例外はあるとしても、基本的に必要なものは全て引数で受け取り、処理結果を呼び出し元に返します。
メソッドは、クラスに所属し、クラスの資源(プロパティや他のメソッド)と連携しながら、引数として渡されたデータに処理を施し、呼び出し元に返すのです。
そして、メソッドはクラスに任された役割を果たすために用意されたものです。
言い換えると、クラスの為に働くのがメソッド、どこのクラスにも所属せず単独で働くのが関数です。
メソッドの中で作るローカル関数は、アルバイト社員
一部のプログラミング言語には、ローカル関数というものが定義できます。
ローカル関数は、メソッド内の処理が複雑であったり、同じような処理が必要な場合、そのメソッド内に記述することができる関数です。
但し、ローカルという名が付いている通り、そのメソッド内に定義された変数やローカル関数は利用できますが、他のメソッドから呼ぶことは出来ません。
これを会社に例えると、特定の部署内で働くアルバイト社員に相当します。
メソッドも複雑なものになると、プログラム量も膨れ上がりますので、うまくローカル関数を使う事でスッキリ見やすいメソッドを作ることが出来ます。
まとめ
- 関数とメソッドの違いはフリーランスと社員の違い
- メソッドはクラスの役割を果たすために用意された関数
- メソッドはクラス内の資源を有効活用しながら動くが、関数は渡される引数が全て
- ローカル関数はアルバイトと同じで、そのメソッド内だけで使える関数
如何でしたでしょうか。
色々なWebサイトにメソッドと関数の関係が説明されていますが、会社に例えた説明はここだけだと思います。
この記事で、悶々とした気持ちが晴れたら幸いです。