この記事は、独学エンジニアという学習サイトで学んだ内容をもとに、PHP関数の設計ポイントを整理した自分用の備忘録です。
関数の使い方次第で、コードの読みやすさ・保守性・バグの起こりにくさが大きく変わってきます。
ここでは「関数名・引数・返り値」という3つの視点から、関数をよりよく設計するためのコツをまとめました。
良い関数名をつける
関数名が適切なら、それだけで関数の役割が明確 になります。
関数名を考えるときのポイントを見ていきましょう。
1. 関数が行うことをすべて説明する
NG: processData() → 何を処理するのか不明
OK: sanitizeUserInput() → ユーザー入力をサニタイズする関数
関数が何をするのか明確でないと、利用時に誤解を生んだり、バグにつながります。
「関数がやることをすべて説明する」ようにしましょう
2. 返り値を反映させる
NG: calculate() → 何を計算するのか不明
OK: calculateTotalPrice() → 合計金額を計算 することが明確
関数が何を返すのか を関数名で表現すると、利用時に迷わずに済みます。
また、単数形・複数形の区別 も重要
getUserName() → 1人のユーザー名を返す
getUserNames() → 複数のユーザー名を返す
3. 曖昧な動詞を使わない
NG: handleCalculation() → 「handle(処理する)」は抽象的すぎる
OK: sumUpPrices() → 価格を合計することが明確
「handle」「process」「do」などの曖昧な動詞は避け、具体的な動詞 を使いましょう
4. 数値で関数名を区別しない
NG: saveData1(), saveData2() → 1と2の違いが分からない
OK: saveUserData(), saveOrderData() → 保存するデータの種類が明確
関数名に意味のあるキーワード を入れると、何をする関数なのかが明確になります!
引数のベストプラクティス
関数の引数(パラメータ) は「関数のインターフェース」です。
分かりやすい設計にすることで、関数の使いやすさが格段に向上します
1. すべての引数を使用する
NG:
function createUser($name, $age, $email, $unusedParam) {
// $unusedParam が使われていない
}
OK:
function createUser($name, $age, $email) {
// 不要な引数を削除
}
使わない引数は削除しましょう
2. 引数の型を明示する
NG:
function calculateTotal($price) {
return $price * 1.1;
}
OK:
function calculateTotal(float $price): float {
return $price * 1.1;
}
型指定すると、誤った型の引数を防ぐ ことができるので、コードの信頼性が上がります
3. 引数の数は 7 個以下にする
NG:
function registerUser($name, $email, $password, $phone, $address, $city, $country, $zip) { ... }
OK:
function registerUser(array $userData) { ... }
多すぎる引数は配列やオブジェクトにまとめる
4. 似た引数を使う関数は順番を統一する
NG:
function createUser($name, $age, $email) { ... }
function updateUser($email, $name, $age) { ... }
OK:
function createUser($name, $age, $email) { ... }
function updateUser($name, $age, $email) { ... }
引数の順番がバラバラだと混乱のもと! 統一しましょう
返り値のベストプラクティス
関数の 返り値 も、設計のポイントです
1. すべての状況で値を返す
NG:
function checkHand($cards) {
if (isStraight($cards)) {
return "ストレート";
}
if (isPair($cards)) {
$result = "ペア"; // return を忘れてる
}
}
OK:
function checkHand($cards) {
$result = "ハイカード"; // デフォルト値を設定
if (isStraight($cards)) {
$result = "ストレート";
} elseif (isPair($cards)) {
$result = "ペア";
}
return $result; // 必ず値を返す
}
すべてのケースで値を返すように設計しよう
2. 返り値の型を明示する
NG:
function getUserAge($name) {
return "25"; // 文字列を返してしまう
}
OK:
function getUserAge(string $name): int {
return 25; // 型を統一する
}
「何が返るのか」を明確にすることで、バグを防げます
まとめ
関数を使いこなすためのポイント
関数名を分かりやすくする
-
何をするかすべて説明する
-
返り値を反映した名前をつける
-
曖昧な動詞を使わない
引数の設計を見直す
-
使わない引数を削除する
-
型を明示する
-
似た引数の順番は統一する
返り値の設計を見直す
-
すべてのケースで値を返す
-
返り値の型を明示する
まとめた内容は以上です。
関数はプログラムの中でも特に再利用性・可読性・保守性に直結する重要な要素なので
関数名・引数・返り値の設計を意識することで、より「伝わる」コードが書けるようになると思います。
この備忘録が、学習中の方にとって少しでも役に立てば幸いです。