こんにちは。新卒1年目のuekiです。
今回は学生時代にチーム開発を始める前にやっておけば良かったなと感じた、
コーディング規約について弊社の規約を一部紹介します。
学生の皆さんには是非一度目を通していただき、チーム開発する前に再度見直してもらえたらと思います。
コーディング規約とは
プログラムの書き方を統一するためのルールです。
コーディング規約を作る目的、メリット・デメリット
これらのサイトに書いてます。
以下引用です。
ソースコードに統一性が出て可読性が高まる。
バグの発生源となりやすいコーディングを防止することで保守性が高まる。
コーディング規約例
ここで弊社のコーディング規約を一部紹介します。
これらがベストな規約とは限らないので、自分たちのチームに合うよう調整してみてください。
スペースの開け方、改行
if ($a == 1) {
} elseif ($b == 1) {
}
// 括弧の前後にスペース、比較演算子の前後にもスペース、ifと開始中括弧は同一行で。
for ($i = 1; $i < 9; ++$i) {
}
// for文の場合は、セミコロンの後に空白
// $i++より++$iの方が処理スピードが速い
function hoge($val)
{
$val *= $val;
return $val;
}
// returnの前には改行をいれる
一行の文字数が長くなりすぎる場合は適宜折り返しましょう(目安120文字くらい)
× $voiceQuery = TUserEnqueteResultsTable::getInstance()->createQuery('tuer')->where('tuer.decided_cooperation_id = ?', $coopId)->andWhere('tuer.show_type = ?', 1)->andWhere('tuer.show_site_code = ?', 'hikkoshizamurai')->orderBy('tuer.release_date DESC, tuer.show_dateDESC')->limit(1);
○ $voiceQuery = TUserEnqueteResultsTable::getInstance()
->createQuery('tuer')
->where('tuer.decided_cooperation_id = ?', $coopId)
->andWhere('tuer.show_type = ?', 1)
->andWhere('tuer.show_site_code = ?', 'hikkoshizamurai')
->orderBy('tuer.release_date DESC, tuer.show_dateDESC')
->limit(1);
インデントはスペース2つとする
// ○ スペース2つ
function hoge($val)
{
$val = $val * 2;
return $val;
}
// × スペース4つ (自分たちのチームに合った方を選択してください。
function hoge($val)
{
$val = $val * 2;
return $val;
}
変数名は最初小文字で、接続する単語の先頭は大文字(キャメルケース)
$variableName
定数名は全て大文字で、接続する単語の先頭に_(アンダーバー)を付ける
CONSTANT_NAME
中カッコなしのifやforは使わない(処理追加時のカッコ足し忘れ防止)
× if ($a == "abc") $b = 0;
○ if ($a == "abc") { $b = 0; }
○
if ($a == "abc") {
$b = 0;
}
最後に
各プログラミング言語やフレームワークのドキュメントにコーディング規約が載っていたりするので、参考にしてみてください。
PHP
Basic Coding Standard
Coding Style Guide
Symfony