1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

関数設計の基本と実践ポイントまとめ

Posted at

この記事は、独学エンジニアという学習サイトで学んだ内容をもとに、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; // 型を統一する
}

「何が返るのか」を明確にすることで、バグを防げます


まとめ

関数を使いこなすためのポイント

関数名を分かりやすくする

  • 何をするかすべて説明する

  • 返り値を反映した名前をつける

  • 曖昧な動詞を使わない

引数の設計を見直す

  • 使わない引数を削除する

  • 型を明示する

  • 似た引数の順番は統一する

返り値の設計を見直す

  • すべてのケースで値を返す

  • 返り値の型を明示する


まとめた内容は以上です。

関数はプログラムの中でも特に再利用性・可読性・保守性に直結する重要な要素なので
関数名・引数・返り値の設計を意識することで、より「伝わる」コードが書けるようになると思います。

この備忘録が、学習中の方にとって少しでも役に立てば幸いです。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?