PHP-関数
-
関数の基礎
【引数】
・リファレンス渡し → バグの温床になりやすい
・デフォルト引数
・可変長引数
・名前付き引数 → 引数の順番を変えたくない、気にしなくてよいときに使う
【返り値】
・return
・可変関数 → 関数の呼び出しを動的に行える -
無名関数
クロージャーとも言われる
関数名を持たず、値として受け渡しできる
関数の引数に関数を渡したい時に使う
一回しかしない処理の時、関数を定義しないので、省スペースで書ける
親のスコープの変数を引き継ぎたいときは、useを使う※親スコープの変数は使えない。
無名関数は、簡単に書くことができる(アロー関数)
※アロー関数は、無名関数と違いuseを使わなくても、親スコープの変数を自動的に使える -
関数を作成する理由
・プログラムの複雑さを下げるのが重要な理由
・詳細な処理を抽象化隠蔽することができる。
・コードの重複を避けることもできる。変更による箇所が一箇所になる
・1~3行ほどの処理でも単一の機能なら関数にすることで読みやすくなる→ロジックを集約できるメリットもある。 -
関数の凝集度
関数内の処理がどれだけ密に関連しているか
・機能的凝集度 → 一番理想的なもの
・情報的凝集度/逐次的凝集度 →
・連絡的凝集度/通信的凝集度 →関数内の処理が同じデータを使用するがそれ以外に関連性がない関数
・手順的凝集度
単純に順番になっている処理を幾つをまとめたもの
・時間的凝集度/一時的凝集度
・論理的凝集度 →
・暗号的凝集度 →設計ミス -
関数を使いこなす
・良い名前をつける
関数が行うことを全て説明する
返り値を反映させる名前にする
名前は必要な長さにする
あいまいな動詞を使わない
関数名を数値で区別しない
正確な反意語を使う
・引数をわかりやすさが関数の品質に直結する
全ての引数を使う
引数の型を明記する
引数の数は7個以下にしよう
複数の関数が似たような引数を使用する場合は順番を統一する
引数を作業用変数としては使用しない
・返り値は考えられる全ての状況において関数が値を変えることを書くにする
※関数の先頭で返り値を初期化して値を入れておくもの良い方法