海外で人気の PHP 言語のコーディング規約(慣習)は?
プログラムの書き方は人それぞれ少しづつ異なっていますが、統一されていれば読みやすくてメンテナンスしやすいプログラムになります。ただコーディング規約というものは会社毎に異なっていたりして非常に統一性にかけているのも事実です。そこで世界の開発者達がどのようなプログラムの書き方をしているのか、GitHub に登録されている PHP ソースコードの統計情報から得られた結果を見ていきましょう。
Popular Coding Convention on Github
PHP 言語で人気のコーディングスタイルは?
インデントはスペースかタブか?
Space
class Foo {
function bar($baz) {
// uses spaces for indentation
}
}
Tab
class Foo {
function bar($baz) {
// uses one tab for indentation
}
}
クラス(Class)の中括弧はどう書く?
56.63% がクラス名と中括弧の間にスペースを入れています。Class opening/closing braces on seperate line (Allman)
class Foo
{
// ...
}
Class structure opening/closing braces on same line as declaration (OTBS)
class Foo {
// ...
}
if 文や while、switch 等の制御文はどう書く?
67.481% が if や while、switch の条件と中括弧の間にスペースを入れています。Control structure opening/closing braces on same line as declaration
if($baz) {
// ..
} elseif($bar) {
// ..
} else {
// ..
}
while ($i <= 10) {
// ..
}
switch($beer) {
// ..
}
Control structure opening/closing braces on seperate line from declaration
if($baz)
{
// ..
}
elseif($bar)
{
// ..
}
else
{
// ..
}
while ($i <= 10)
{
// ..
}
switch($beer)
{
// ..
}
関数(メソッド)の中括弧はどう書く?
64.267% が関数名と同列に中括弧を書いています。Method structure opening braces on same line as declaration (OTBS)
function bar($baz) {
// ...
}
Method opening/closing braces on seperate line (Allman)
function bar($baz)
{
// ...
}
if 文や while、switch の直後にスペースを入れる?
90.232% が条件文と中括弧の間にスペースを1個入れています。Space around control structure Evaluation block
if ($baz) {
// ...
} elseif ($bar) {
// ...
} else {
// ...
}
while ($i <= 10) {
// ...
}
switch ($beer) {
// ...
}
No space around control structure Evaluation block
if($baz){
// ...
}elseif($bar){
// ...
}else{
// ...
}
while($i <= 10){
// ...
}
switch($beer){
// ...
}
if 文や while、switch 等の制御文の条件式にはスペースを入れる?
83.349% が制御文の条件にはスペースを入れていません。No space inside control structure Evaluation block
if ($baz) {
// ...
} elseif ($bar) {
// ...
}
while ($i <= 10) {
// ...
}
switch ($beer) {
// ...
}
Space inside control structure Evaluation block
if ( $baz ) {
// ...
} elseif ( $bar ) {
// ...
}
while ( $i <= 10 ) {
// ...
}
switch ( $beer ) {
// ...
}
関数(メソッド)の関数名と引数の間にはスペースを入れる?
83.059% が関数名と引数の間にスペースは入れていません。No space around parameter declaration block
function bar($baz){
// ...
}
Space around parameter declaration block
function bar ($baz) {
// ...
}
関数の引数にはスペースを入れる?
84.255% が関数の引数にはスペースを入れていません。No space inside parameter declaration block
function bar($baz){
// ...
}
Space inside parameter declaration block
function bar( $baz ){
// ...
}
クラス名の付け方は?
76.625% がクラス名の名付け方は "PascalCase" という付け方をしています。Class Name in PascalCase
class FooBarBaz {
// ...
}
Class Name in Snake_Pascal_Case
class Foo_Bar_Baz {
// ...
}
Class Name in snake_case
class foo_bar_baz {
// ...
}
Class Name in camelCase
class fooBarBaz {
// ...
}
Class Snake_first_letter_uppercase
class Foo_bar_baz {
// ...
}
Class Name in CAPS_SNAKE_CASE
class FOO_BAR_BAZ {
// ...
}
定数名の付け方は?
97.389% が定数には "CAPS_SNAKE_CASE" という付け方をしています。Constant Name in CAPS_SNAKE_CASE
const BAR_BAZ = 0;
define('BAR_BAZ', 0);
Constant Name in snake_case
const bar_baz = 0;
define('bar_baz', 0);
Constant Name in camelCase
const barBaz = 0;
define('barBaz', 0);
Constant Name in PascalCase
const BarBaz = 0;
define('BarBaz', 0);
Constant Name in Snake_Pascal_Case
const Bar_Baz = 0;
define('Bar_Baz', 0);
関数名の付け方は?
74.158% が関数名に "Camel Case" という付け方をしています。Function Name in camelCase
function barBaz(){
// ...
}
Function Name in snake_case
function bar_baz(){
// ...
}
Function Name in PascalCase
function BarBaz(){
// ...
}
Function Name in CAPS_SNAKE_CASE
function BAR_BAZ(){
// ...
}
Function Name in Snake_Pascal_Case
function Bar_Baz(){
// ...
}
関数(メソッド)の定義順序は?
85.885% が関数定義の順番は、public の次に static というようにスコープ、static の順に付けています。static declared after visibility
class Foo
{
public static function bar($baz)
{
// ...
}
}
abstract (or final) declared before visibility
class Foo
{
abstract public function bar($baz);
// ...
}
static declared before visibility
class Foo
{
static public function bar($baz)
{
// ...
}
}
abstract (or final) declared after visibility
class Foo
{
public abstract function bar($baz);
// ...
}
1行の長さは80文字を超える?
Line length is within 80 characters.
/* width is within 80 characters */
Line length is within 120 characters
/* width is within 120 characters */
Line length is within 150 characters
/* width is within 150 characters */