menu
ホーム > PHPプログラミング心得 > よりよいコードを記述するために

よりよいコードを記述するために

PHPでよりよいコードを記述するために | wepicks!

より良いPHPerになるための20Tips

POINT
 参照記事20 Tips you need to learn to become a better PHP Programmer
 記事を参考にしながら筆者なりの意見を書き入れてみました。良いコードというのは常に考える必要があると思います。また、良いコードの認識や記述方法などは、プログラマーのレベルに依存すると思いますので、賛成意見や反対意見を取り入れながら成長させていくことになるでしょう。

 初心者はまず、「良いコードとは?」ということを意識することが大切だと思います。意識して実践するにはコーディングの指針を決めることが良いと思います。指針は常に変更して改善させることになると思います。

 以下は、コードを記述する際の一つの指針になると思います。初心者にとっては以下のことを考え実践していくことは非常に大切なことだと思います。一度試して見てください。その上で自分なりに様々な意見を取り入れ、改善し、よいコードを記述することを心がけていきましょう。

 また、良いコードを書くには良いコードを見ることが大切ですね。WordPressなどを参考にするのもいいと思います。

1. <?php と ?> を使う

 コードを記述する際、開始タグと終了タグは「<?php…?>」を使うようにしましょう。
「<?…?>」は他のサーバーで動かない可能性があります。

同様に、変数を echo するときもショートタグの使用を避けましょう。

「<?php…?>」を使えばポータブルなコードになります。

2. 設定ファイルを分離する

 スクリプト全体で使用するような設定値は設定ファイルを別に作ってそこに記述しましょう。
そして、設定ファイルはスクリプトの頭でインクルードしましょう。
こうしておけば、設定を書き換える必要が出てきても、設定ファイルの一部を書き換えるだけで済みます。
ファイルのインクルードはとても簡単です。

※設定ファイルはドキュメントルート以外に設置するとセキュリティー上よいでしょう。

3. コメントは友達

 自分で少し前に書いたコードが理解できなくなることがあります。
そんな時、コメントはそのときに考えていたことを思い出させてくれます。

※コードの正確な説明というよりは、そのコードは何を求めようとしているのかなどの目的を記述するのがいいのではないかと思います。

4. インデントとスペースを使う

 正しくインデントされているコードは読みやすいのでインデントしましょう。

不適切にインデントされたコード。

適切にインデントされたコード。

5. 変数名に意味を持たせる

 変数名に意味を持たせることは大切なことです。名前を見てどのようなデータが入っているのか連想できる名前がいいでしょう。名前は長すぎてもだめですし、名前を決めるのに時間を掛けすぎてもだめです。ネーミングは慣れもあるので、常に意識して改善するように心掛けましょう。
また、良いコードを見て参考にするのがいいと思います。
データの型まで分かると更に良いでしょう。
例えば、integer型の変数には、変数名のプレフィックスとしてiをつける。
こうすれば意図しているデータ型も名前から判別できます。
変数に型宣言しないPHPにおいて、これは特に重要です。

※型付けの弱い言語であるPHPでは、上記のように変数名に型を判別できる名前を付与したとしても、実際に違う型のデータでも全く問題なく使用できます。変数名はデータ型を保障するものではありません。

6. 変数を初期化する

 PHPでは、変数に値を代入するたびに、自動で変数を定義してくれます。
変数を使う前に初期化するのは良い癖です。
変数を初期化すると警告が出なくなりますし、空の変数を使用するので汚染リスクが無くなり、セキュリティーが向上します。

7. 返り値は常に false を返す、true ではない限り

 特定の「値」であるかを判定するコードを記述する場合、
望む「値」以外は常に false を返すように記述しましょう。

悪い例:

良い例:

2番目の例は、あなたの書いた if文 が間違っている場合には有効です。
正しいデータが入力されるまでは、動かないコードを書くべきです。

8. 連想配列のキーにアクセスする場合はクォートで囲う

 連想配列にアクセスする場合、以下のどちらのコードでもPHPは動きます。

2つ目のコードは、PHPはまず始めに、 marc と名付けられた定数を探しに行き、もし存在すればその値に置き換えます。
連想配列のキーにアクセスする場合はクォートで囲うようにしましょう。

9. echo するときに「,(コンマ)」を使う

 文字列を変数の値と一緒に出力する場合、PHPでは「.(ドット)」の代わりに「,(コンマ)」を使う方がいいです。
なぜなら、「.(ドット)」を使うよりも僅かに速くなるからです。(以下のコードでテストした場合)。

カンマ

ドット

10. 三項演算子を使う

 シンプルなif文を書きたい場合は、三項演算子を使えば1行で通常のif文を書くのと同じことが書けます。

通常のif文

三項演算子を使用した場合

三項演算子は下記のように使用されます。

11. 真偽値の判定には「===」を使う

 「===」を使用すると「値」の判定と共に「型」の判定も行われます。変数が true か false かを正確に判定するために、「==」よりも「===」を使うほうが良いでしょう。

12. ++ と -– の演算子を使う

 整数を「減少」「増加」させる場合は、「++(インクリメント)」、あるいは「–(デクリメント)」の演算子を使用しましょう。

悪い例:

良い例:

 この演算子の優れているところは、他演算の実行中でも使えることです。(例えば、if文とかwhile文)。
++や-–の演算子は、変数の前に置くか、後に置くかで、動作が異なります。
前に置けば、その動作が完了する前に、後に置けば、その動作が完了した後にインクリメント、あるいはデクリメントが実行されます。

以下の例を参考にしてみてください。

13. 代入演算子を使う

 2以上の数値をインクリメントあるいは、デクリメントしたい場合は、代入演算子を利用しましょう。

悪い例

良い例:

文字列にも使用できます。

14. 変数のdump関数を作る

 コーディング中に変数の値を確認することはよくあります。その際 print_r や var_dump などを使用すると思います。
さらに簡単にするために、次のような関数を作っておきましょう。変数の確認が迅速に簡単にできるようになります。

15. 定数を使う

 値が変更されない変数を使っているのであれば、定数化しましょう。
頻繁にアクセスするような、例えばディレクトリパスやエラーメッセージなどです。
定数名には、全て大文字を使うことが慣例になっています。

16. $_GET と $_POST を使う

 $_REQUEST は使用しないで、URLからGETパラメータが欲しいときは $_GET を、フォームからPOSTパラメータが欲しいときは、 $_POST を使用しましょう。また、 $_GET や $_POST は直接使用せずに意図するデータになるようにフィルタリングしましょう。

※フィルタリングはセキュリティー上非常に重要です。フォームから入力されたデータ等、外部からのデータはすべてフィルタリングするようにしましょう。

17. 関数の代わりにオブジェクトを使う

 関数に多くの引数が設定されている場合、オブジェクトに切り替えた方が良いでしょう。

こうすることが出来ます。

※あまり変わらないような気もします。多すぎる引数が設定されている場合は設計を考えてみましょう。どのような場合にオブジェクトが有効なのかみなさんも自分なりに考えて見てください。

関数の引数が多い場合は連想配列にまとめてから関数の引数として渡すのがよいと思います。

18. メソッドチェインを使う

 複数回オブジェクトのメソッドを呼び出し、変数にセットしている場合、メソッドチェインを使うことで、コードをよりシンプルに出来きます。メソッドチェインの方法は、各メソッドにおいて返り値に$thisをセットすることで利用できます。

次のコードは、

下記のようにメソッドチェインに書き換えることが出来ます。

19. コードの繰り返しを止めよう

 コードが繰り返されているならば、重複しているコードを関数かオブジェクトに置き換えましょう。
この作業はとても面倒ですが、アプリケーションが大きくなればなるほど、その対価を支払う価値があります。

次のように書き換えられます。

非常に簡単な例ですが、参考にしてみて下さい。

20. 結合度を減らし、独立性を保つこと

 関数には明確に責任と目的を持たせましょう。引数、処理、出力、を明確にするようにしましょう。そうすれば独立性が高くなります。
結合度は1つのコンポーネントを変更した時に、どれだけのコンポーネントにどれだけ影響を与えるかということです。ある関数の内容を変更した場合、他の関数を変える必要があるかどうか、ということです。

独立性の高いコードを常に正しく追加しましょう。

悪い例:

 この例は、バリデーションを関数内に含んでいて、独立性が弱く、結合度が高くなっています。
結果の出力を関数内に置くこと自体が大きな問題です。
この関数を複数箇所で使っていた場合、テキストを変更すると、全ての箇所で変更を考慮する必要があります。

良い例:

こうすることで、addとresultの関数の独立性が高まり、色々な箇所で使用できるようになります。。

より良いPHPerにならないための20Tips

 上記内容を把握したところでこんな意見もあります。
より良いPHPerにならないための20Tips
まずは上記を読んで理解した上で反対意見も考えてみてください。

タグ(=記事関連ワード)

タグ: , ,

日付

投稿日:2011年10月3日
最終更新日:2023年08月30日

このカテゴリの他のページ

この記事へのコメント

トラックバックurl

https://wepicks.net/bettercode/trackback/

page top