関数(ファンクション)とメソッドの違い!ちょっとわからなくなり調べてみた
初歩中の初歩かもしれませんが、プログラミングをしていると初歩中の初歩を忘れてしまうことがあります。
また新たな情報が入ってくると呼名も変わったりして、どっちがどっち?といったことにもなります。
例えば、関数(ファンクション)とメソッドの違い!
そこで、気になったので調べてみました。
似ているようで意味が違うみたい
関数とメソッドの意味を調べてみました。
関数(ファンクション)
関数とは、引数と呼ばれるデータを受け取り、定められた通りの処理を実行して結果を返す一連の命令群。多くのプログラミング言語では、関数がプログラムを構成する要素となっている。多くの言語や処理系では、開発者の負担を軽減するため、よく使う機能が関数としてあらかじめ用意されている。
メソッド 【 method 】 メンバ関数 / member function
メソッドとは、方法、方式、手法、やり方、などの意味を持つ英単語。ITの分野では、オブジェクト指向プログラミングにおいて各オブジェクトに属する処理や操作のことや、通信プロトコルにおける要求の種類などのことをメソッドということが多い。一般の外来語としては、一定の形式として確立した奏法、教授法、指導法、その他様々な技法のことを「○○メソッド」のように言う。
あまり違いが無いように感じますが、「メソッド 関数 違い」とかで検索すると、オブジェクト指向プログラミング言語で定義されたものはメソッドというみたいです。
それ以外は、関数というようです。
javaであれば、オブジェクト指向プログラミング言語のためClassの中に定義することが基本なのでメソッドになり、ファンクションをほぼ聞かないと思います。
僕が気になったのがPHPで開発している時に、人にどう説明するかということです。
PHPの場合
PHPで関数を定義する時下記のような書き方をします。
function getTest($str = null)
{
return 1 + 1;
}
関数を記述するときに、functionを付ける必要があります。
オブジェクト指向のフレームワークでも同様な書き方になります。
class TestClass
{
private $data = null;
function getTest($str = null)
{
return 1 + 1;
}
}
どちらもfunctionを付けて書くためちょっとややこしくなりますね。
オブジェクト指向で書くかどうかで呼名が変わる
PHPで関数を書く場合、funcionを付けて書く必要がありますが、関数かメソッドかの呼び方は、
- オブジェクト指向の場合はメソッドと呼ぶ
- それ以外は関数と呼ぶ
のようです。
ただ一部の方の意見ですが、「メソッドは関数であり、関数ではないメソッドは存在しない。」つまり、メソッドのもとは関数だから、メソッドも関数って呼んでいいよということのようです。
やっぱりややこしいですね。(笑)
まとめ
調べながらも少し混乱してしまいましたが、オブジェクト指向で使われているかどうかで呼名をかえるのが一番しっくりきました。
またあながち間違ってないと思われます。
関数(ファンクション)とメソッドの違いは、Webページのアドレスのことは「URI」と呼ぶか「URL」と呼ぶかと似ている感じがしますね。
コメント
コメントを残す