LoginSignup
23
24

More than 3 years have passed since last update.

PHP初心者もできる else句を使わない読みやすいコード ※追記

Last updated at Posted at 2020-10-25

業務でネストの深いIF文を見ると、追うのが大変でうんざりすることがあります。
大体の場合、ちょっとした修正のために付け加えていって肥大化したパターンです。
これを予め防ぐ、簡単な工夫を一例として示します。

ちなみに、未経験でエンジニア求人に応募するときも、
実際にこのような記法を知っていれば、保守性について話せてポイントが高いと思います。

早期リターン&ガード節

以下は与えられた値の型を判断するだけのコードです。

$value = [1,2,3];

function judgeType($value) :string //タイプヒンティング;この関数がstringを返すことを明示
    {
        if (is_string($value)) {
            $result = $value . ' is string.';
        } else if (is_int($value)) {
            $result = $value . ' is integer.';
        } else {
            $result = $value . ' is neither string nor integer.';
        }
        return $result;
    }

echo judgeType($value); // Given value is neither string nor integer.

この程度の量なら読めなくはないですが、無駄があります。
これを下記のように書き換えることが出来ます、


$value = [1,2,3];

function judgeType($value) :string //タイプヒンティング;この関数がstringを返すことを明示
    {
        if (is_string($value)) {
            return  $value . ' is string.';
        } 

        if (is_int($value)) {
            return $value . ' is integer.';
        } 

        return $value . ' is neither string nor integer.';
    }

echo judgeType($value); // Given value is neither string nor integer.

スッキリしましたね。
ポイントを整理すると

  • $resultというローカル変数が不要。
  • 各IF句にreturnがあるので、条件に当てはまった場合関数は戻り値を返して終了する。
  • elseがなくても2つのIF句がスキップされ最終行のreturnが実行される。

このようにローカル変数を置かず即時にreturnを置くことを早期リターンと呼びます。
また、else句を使わず早期リターンする方法をガード節といいます。

やっていることは単純なので、ぜひガード節を用いて保守性の高いコードを書くことを意識してみてください。

追記:2020年10月26日

コメントより、括弧を取る書き方もあるので追記します。

ただし、フレームワークやプロジェクトでPSR準拠させている場合は、
この書き方は避けたほうが良いとのことです。
確かに、メソッド書き足したりしにくそうですね。
他にも推奨されない理由があればぜひ教えていただきたいです。

近頃のPHPのフレームワークはPSR準拠なんで
中括弧を省く構造文は勧めたくないですね。
https://qiita.com/hshimo/items/04be1f432240c58300f4

function judgeType($value) :string //タイプヒンティング;この関数がstringを返すことを明示
  {
    if (is_string($value)) return $value . 'is string.';
    if (is_int($value)) return $value . 'is integer.';
    return $value . 'is neither string nor integer.';
  }
23
24
4

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
23
24