記念すべき第1回目のWEBテクニックは
HTMLやCSS、PHPといった「ソースを書く時のルール(コーディング規約)」についてです!!
なぜ、この「ソースを書くときのルール」を第1回目に書いたのか?
それは、プログラムなどのソースを書けば書くほど、「後悔してしまう」可能性が高いからなんです!!
よくある後悔としては、
・コメントが少なくて、どんな処理を行っているか?忘れてしまう
・ソースが読みにくくて、他のプログラマーが修正しにくい
・複雑にネスト(入れ子)しすぎて、バグを作ってしまう
・再利用性の低いソースコードになる
こんなことが起こったりするんです。
※初心者の落とし穴※
この「忘れてしまう」が、かなりの曲者です!!
ソースを書いている間は、当然処理の流れや変数名・関数名を覚えてますので、ついつい「コメントを残すのが面倒」になって書かず、半年後・1年後になって「プログラムを修正・再利用」する必要が出た時に、処理を思い出すのに時間がかかって困ってしまいます。
特に、プログラマーとして仕事をする方、したい方などは、
たくさんのプログラムを作っていきますので、再利用性の高い・時間が経ってもすぐに修正・追加が出来るようになっていると、仕事もドンドン早くなりますよ!!
「最初からやっとけば良かったぁ。。」
と、「後悔」する前に!
今から自分ルールを作って、それに沿ったソースを書くようにしましょう!!
ちなみに、決まった書き方は存在しません。
どんな風に書いても、原則自由で御座います!!
ですが、他の人も見たり、修正したり、追加したりなど、再利用性を高める為にも、
他の人のコーディング規約を取り込んで、「自分ルール」を完成させましょう!!
参考までにasenosが勝手に作ったPHPコーディングの自分ルールを紹介します。
・PHPの開始タグは <?php を使用し、 <? などの省略タグを使わない
・PHPの終了タグは ソースの最後にHTML表示がなければ ?> を省略する
・HTMLと混在させる時は、PHP処理をHTML表示の前に書く
・フォーム入力などの表示と、処理プログラムを分けて書く
・インデントは「半角スペース4個」で統一して書く。
・共同開発・配布などを行う場合のみ、「変数名 = 中身」 の頭をそろえる
・改行コードは「\n」で書く
・PCサイトでは、文字コードは「UTF-8」で書く
・モバイルサイトでは、文字コードは「Shift_JIS」で書く
・CSVファイル書き出し時は、文字コードを「sjis-win」で改行コードを「\r\n」で書く
・一行辺りのソースコードの長さを長くしすぎない
・出来るだけ 変数の意味・関数の意味・処理の意味 をコメントに残す
・3項演算子は使わない
・echoの省略 <?=$hensuu?> は使わず、<?php echo $hensuu; ?>で統一する
・GETやPOSTなどのグローバル変数はまずローカル変数に入れる
・先に変数宣言または初期化を行う
・定数は、全て「 _ 」アンダースコアから初めて、全て大文字の半角英数字で統一
・変数は、4文字以上で統一、分岐処理などの一部は例外として$i、$a、$tmpなど使う。
・SQLを呼び出す変数は、コマンド:2文字、結果セット3文字で統一
・関数は、大文字半角英字から始まり、_ アンダースコアを挟んで書く(例:Time_Stamp_Get)
・$row["id"] は、$row[id]のように、 「”」ダブルクォーテーションを省略
・$row["count(*)"]や $file[$id.":."$hensuu] は例外です
・「”」ダブルクォーテーション内の変数は、「今日は".$hensuu."です」と分ける
ぱっと出てくるだけでこんな感じです。
文字の色が違う箇所は、真似して頂いた方が良いと思う推奨項目です。
また、別の機会に詳しく書きますが、
たとえば、あなたのサーバできちんとプログラムが動いていても、
私や他の人が使っているサーバでは動かない事もあります。
動かない理由は
・PHPのバージョンが違う (使える関数など一部変わるため)
・サーバ環境依存
PHPのバージョン違いなどは、まぁまぁ、しょうがないとしても、
サーバ環境「php.ini」の設定によっては、変数宣言(初期化)が無いと動かない!!
省略タグが禁止されていて、すべて変換しないと動かない!!
なんて面倒な事もありました。
そういう事があるので、推奨項目はそのまま真似された方が無難だと思います。
また、出来れば他の方のルールも見て参考にし、自分なりのルールを作ってみましょう!!
参考記事URL
[foool]丘の上 様
てっく☆ゆきろぐ 様
PHPSPOT開発日誌 様
PHPSPOT PEAR標準コーディング規約 様
最後までお読みくださり、ありがとうございました。
asenos/アセノス