2
2

【PHP】if文を簡潔に書くために守るべきルール

Posted at

エンジニア初心者の投稿であるため、間違っている箇所が多くあるかと思います。
間違っているなどあればご教授いただけると幸いです。

はじめに

PHPの学習中、if文の条件式の書き方を全く意識せず書いていたため、非常に美しくない条件式を量産してしまっていました。戒めの意味も込めて記事に残したいと思います。

if文とは(PHP)

PHPの公式サイトにはこのように書いてありました。

この構文は、命令の条件実行を可能にします。 PHP では、C 言語に似た次のような if 構文が使用されます。
if (式)

式は論理値で評価されます。 式が true と評価された場合、 PHP は文を実行し>ます。false と評価された場合は、これを無視します。

条件の書き方次第では何通りもの書き方ができます。今回はそのことについてメンターの方に指導してもらったことを含めつつ、自分なりに考えたことをここに残したいと思います。

if文 条件式の書き方

否定系・肯定系どちらも使える場合は肯定系を使う

条件式が!==と===のどちらでも表せる場合は===を使おうという意味です。
結構当たり前のことだと思いますが、「それ肯定系でいいじゃん」と思うコードを否定系を使ってコードを書いてしまっていました。

〜具体例〜
以下は配列[1,3]から1のみを出力するプログラムです。

PHP 良い例
//肯定系(===)を用いて条件式を表現

<?php
$array = [1, 3];

foreach ($array as $num) {  
    if($num === 1)
    echo $num;
}
PHP 悪い例
//否定系(!==)を用いて条件式を表現

<?php
$array = [1, 3];

foreach ($array as $num) {  
    if($num !== 3)
    echo $num;
}

今回は簡単な例を載せているので「そうはならないだろ」となるかと思いますが、少し複雑な条件式になったときに否定系を無意識に使ってしまうことがあったので気をつけたいです。

コード数が少ない条件をIf文の条件式にする

条件に当てはまる要素の数を予想して、コードの記述が少なくなる方を選択して条件式する。これも頭の片隅に入れておかないと気づいたらめんどくさいことをやっていることがあるので記録に残しておきます。

〜具体例〜
以下は[青森県、秋田県、岩手県、宮城県、山形県、福島県、東京都]の中で東北地方である都道府県を出力するプログラムです。

PHP 良い例
//条件式が簡潔になっている

<?php
$prefectures = ['青森県', '秋田県', '岩手県', '宮城県', '山形県', '福島県', '東京都'];

foreach ($prefectures as $prefecture) {  
    if($prefecture !== '東京都') {

    echo $prefecture;

    }
PHP 悪い例
//条件式が複雑になっている

<?php
$prefectures = ['青森県', '秋田県', '岩手県', '宮城県', '山形県', '福島県', '東京都'];

foreach ($prefectures as $prefecture) {  
    if( $prefecture === '青森県' || 
        $prefecture === '秋田県' ||
        $prefecture === '岩手県' ||
        $prefecture === '宮城県' ||
        $prefecture === '山形県' ||
        $prefecture === '福島県' ) {

    continue;

    }
    
    echo $prefecture;
}

今回の例でも「見ればわかるだろ」って感じですが、実際にプログラムを組んでいるときに似たようなミスをしてしまうのでしっかりと覚えておきたいと思います。

おわりに

だらだらと私自身がやってしまう条件式での決して綺麗ではない書き方を残してきました。簡単なコードであれば、絶対にそんなことはしないだろと思うのですが、今の私では、気を抜くと上記のような難解な条件式を書いてしまうことがあります。美しいコードを目指して、日々鍛錬したいと思います。

2
2
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
2
2