結構あると思われますが、私のソフト制作経験では
以下の感じです
<メリット>
・手続き処理を機能ごとに分けられる
・呼び出し元・先と分ける事で修正の削減を計れる
・再帰処理が視覚的容易に出来る
・用途により呼び出し規約式/展開式に分けれる
・多項式において部分式が冗長である時にその部分を関数として
実装することによって、単純多項式のように扱える
・プログラム構造をワーニエ法設計に基づくアーキテクチャに対し
対話的に作成できる
・大規模なプログラムとなった際にモジュール単位に分割しやすい
・キャパシティ指向におけるプログラミング設計においてその後の
オブジェクト化への下準備として必須である
・関数によりデータのやり取りは、タイプに基づく為、
処理の流れの中でのデータの体裁を把握できる
・スタックの動向を抽象化できる
・名前空間による管理で詳細性質はブラックボックス化できる
<デメリット>
・呼び出し元・先の処理の共通性を把握する必要がある
・ポインタを受け渡す際には有効値に注意しなければならない
・再帰処理ではネストが基本的に隠蔽されている為、意図的に
打ち切りを設ける必要がある
・名前空間において予約語などと重複しないよう把握が必要
・各関数ではスコープ制限があるため動的なデータ源泉においては
持続性を考慮しておく必要がある
・その後の修正余地を考慮する場合、オーバーロードにおいての
把握が必要である
・関数の任意展開が出来ない場合、オーバーヘッドを無視できない
・同一スコープで関数ネストを深しすぎるとリーダビリティに欠けてしまう
・遂次型と異なり関数を多用するとフローチャートのブロック数
が増えてしまう
・関数定義においては、先定義か後定義かの順序認識の必要がある
お礼
うわぁ!!こんなに沢山!ありがとうございます! 感謝と共に驚きが…!w これなら次の授業は大丈夫そうです! 一つ一つ噛み砕きながら理解して覚えようと思います! 本当に助かりました!ありがとうございます!