関数/手続き


一連の処理をまとめる。

値を返すものを「関数」、返さないものを「手続き」と呼ぶ。 これは Pascal で見たのが最初だったなぁ。

外部からパラメータを渡す手段として、「引数」がある。 まぁ、値の返しかたとも関連するのだが、値の受け渡しは 大域変数を使うってやり方も有るにはある。

ただし、大域変数を使うと修正時に影響範囲を確定できなくて、 思わぬところに影響が出る事もある。つまり、バグ。

なので、局所性、独立性を高める作り方が結局は安くつく。すなわち、良い作法。

ただ、複数の値を返す場合はどうするとか、そうもできない場面もある。 構造体とかポインタとか使うかなぁ。 (初期の C なんかだと構造体を返すってのはできなかった。 なのでポインタ渡しの需要があった)

引数の渡し方

参照渡しか値渡しかって話。参照渡しなら、関数内での変更が呼び出し元に反映 される。副作用を伴う、って言い方もできる。

明示的に指定する場合は良い。指定が無い、もしくは省略された時の挙動は 言語毎に異なる。また、コピーが伴うとパフォーマンスに影響する。 そういう意味で、確認は大事。

どういう場合に関数化するか

基本は機能単位。

ただ、単に長くなりすぎた処理をを適当にまとめてしまう事にも使われる。 これはこれで見通しが良くなるのでアリだと思う。まぁ、影響も、 再利用の無い関数群が大量に作成されるだけだし。