e コミグループウェア コーディング 規 約 平 成 25 年 8 月 防 災 科 学 技 術 研 究 所
改 訂 履 歴 訂 番 頁 変 更 内 容 承 認 審 査 作 成 2011 年 11 月 新 規 作 成 渡 辺 渡 辺 大 久 保
目 次 1 呼 称 規 約... 2 1.1 ファイル 名... 2 1.1.1 メインファイル... 2 1.1.2 パーツ 設 定 用 ファイル... 2 1.1.3 パーツ 設 定 以 外 のファイル... 2 1.2 DB テーブル 名... 2 2 html コーディング 規 約... 3 2.1 要 素 全 般... 3 2.1.1 h 要 素... 3 2.1.2 input 要 素... 3 2.1.3 script 要 素... 3 2.2 要 素 内 属 性... 3 2.2.1 属 性 全 般... 3 2.2.2 ID 属 性... 3 2.2.3 class 属 性... 4 2.2.4 title 属 性... 4 2.2.5 alt 属 性... 4 2.2.6 summary 属 性... 4 3 CSS コーディング 規 約... 5 3.1 記 述 方 法 の 統 一... 5 4 PHP コーディング 規 約... 6 4.1 命 名 規 則... 6 4.1.1 クラス... 6 4.1.2 関 数 名... 6 4.1.3 変 数 名... 7 4.1.4 定 数... 7 4.2 記 述 方 法 の 統 一... 7 4.2.1 コメントの 記 述... 7 4.2.2 インデント... 8 4.2.3 クラス... 8 4.2.4 制 御 構 文... 9 4.2.5 外 部 ファイル 読 み 込 み... 12 4.2.6 変 数 の 初 期 化... 12 4.2.7 文 字 列... 12 4.2.8 配 列... 13 5 JavaScript コーディング 規 約... 15 5.1 外 部 ファイル 化... 15 5.1.1 出 力 方 法... 15 I
5.1.2 名 前 空 間... 15 5.2 命 名 規 則... 16 5.2.1 クラス... 16 5.2.2 関 数 名... 17 5.2.3 変 数 名... 17 5.3 記 述 方 法 の 統 一... 18 5.3.1 コメントの 記 述... 18 5.3.2 インデント... 18 5.3.3 変 数... 18 5.3.4 クラス... 19 5.3.5 制 御 構 文... 20 5.3.6 文 字 列... 21 5.3.7 配 列... 22 II
1. 呼 称 規 約 1.1. ファイル 名 1.1.1. メインファイル 各 パーツで 使 用 する php ファイルは 従 来 のファイル 命 名 規 則 (block.php) 等 を 使 用 せず module.php を 使 用 する 1.1.2. パーツ 設 定 用 ファイル パーツ 設 定 用 の http リクエストを 受 け 取 る php ファイルは setting.php を 使 用 する 1.1.3. パーツ 設 定 以 外 のファイル パーツ 設 定 以 外 の http リクエスト(Ajax 等 )を 受 け 取 る php ファイルは get.php を 使 用 する 1.2. DB テーブル 名 パーツで 使 用 するテーブル 名 は 他 パーツのテーブルと 競 合 を 避 けるために mod_モ ジュール 名 _ 項 目 名 とする 例 : 掲 示 板 (bbs)のデータテーブル mod_bbs_data 2
2. html コーディング 規 約 2.1. 要 素 全 般 XHTML1.0 Strict DTD に 準 拠 する 文 字 コードは utf-8 を 使 用 する 要 素 属 性 名 は 小 文 字 を 使 用 する 2.1.1. h 要 素 パーツで h 要 素 を 使 用 する 場 合 は h3 から 使 用 する h1,h2 はシステム 側 で 使 用 している 2.1.2. input 要 素 input 要 素 を 使 用 する 際 は label 要 素 を 同 時 に 使 用 する 2.1.3. script 要 素 html 内 に script を 記 述 する 際 は コード 2.1 の 通 り CDATA セクションを 用 いて 先 頭 にコメントを 入 れる コード 2.1 script 要 素 <script type="text/javascript"> //<![CDATA[ document.write("<p>e コミパーツ</p>"); //]]> </script> ( 例 :script タグで JavaScript を 記 述 する 場 合 ) 2.2. 要 素 内 属 性 2.2.1. 属 性 全 般 align 属 性 等 の 非 推 奨 属 性 は 使 用 しない レイアウトは CSS で 実 装 する 2.2.2. ID 属 性 ID 属 性 を 指 定 する 場 合 他 パーツとの 競 合 を 避 けるため コード 2.2 の 通 りモジュ ール 名 _ブロック ID_ 名 称 とする コード 2.2 ID 属 性 の 設 定 <div id="bbs_12345_title" title=" 掲 示 板 タイトル"> 掲 示 板 タイトル</div> ( 例 : 掲 示 板 パーツ(bbs)のタイトルに ID 属 性 を 設 定 ) 3
2.2.3. class 属 性 class 属 性 を 指 定 する 場 合 ID 属 性 と 同 様 競 合 を 避 けるため コード 2.3 の 通 り モジュール 名 _ 名 称 とする コード 2.3 class 属 性 の 設 定 <div class="bbs_body" title=" 掲 示 板 の 本 文 "> 掲 示 板 の 本 文 </div> ( 例 : 掲 示 板 パーツ(bbs)の 本 文 に class 属 性 を 設 定 ) 2.2.4. title 属 性 title 属 性 が 指 定 可 能 な 要 素 には 必 ず 付 記 する 2.2.5. alt 属 性 img 要 素 には alt 属 性 を 付 記 する 2.2.6. summary 属 性 table 要 素 には summary 属 性 を 付 記 し 簡 単 な 説 明 を 記 述 する 4
3. CSS コーディング 規 約 3.1. 記 述 方 法 の 統 一 記 述 方 法 を 下 記 の 通 り 統 一 する { は セレクタの 直 後 に 置 く は 次 のセレクタ 文 字 列 の 前 の 行 に 置 く プロパティの 直 前 には 空 白 4 文 字 もしくは 4 タブインデントをする : の 前 後 には 空 白 を 入 れる 色 コードは(#)で 始 まる 6 桁 のカラーコードで 指 定 する コード 3.1 スタイルシート 記 述 #bbs_12345_title{ font-size : 120%; color : #cccccc; div.bbs_body{ font-size : 100%; border : 1px solid #ff0000; margin : 5px; ( 例 : 掲 示 板 パーツ(bbs)に 適 用 するスタイル) 5
4. PHP コーディング 規 約 4.1. 命 名 規 則 4.1.1. クラス (1) クラス 名 パーツレベルでクラスを 宣 言 時 クラス 名 はコード 4.1 の 通 り cls_mod_ モジュール 名 とする コード 4.1 クラスの 宣 言 class cls_mod_bbs{ // 処 理 ( 例 : 掲 示 板 パーツ(bbs)のクラス 宣 言 ) 処 理 により 複 数 クラスを 宣 言 する 場 合 は コード 4.2 の 通 り cls_mod_モジ ュール 名 処 理 名 とする また 処 理 名 は 英 語 キャメルケースで 記 述 する コード 4.2 複 数 のクラス 宣 言 class cls_mod_bbssetting{ // 処 理 class cls_mod_bbsdata{ // 処 理 ( 例 : 掲 示 板 パーツ(bbs)で 複 数 のクラス 宣 言 ) (2) プロパティ メソッド private/protected のプロパティ メソッドには 先 頭 に_(アンダーバー)を 付 記 する 4.1.2. 関 数 名 パーツレベルの 関 数 名 は mod_モジュール 名 _ 処 理 名 とする システムレベルの 関 数 名 は sys_ 処 理 名 とする 処 理 名 は 英 語 キャメルケースで 記 述 する クラス 内 関 数 では mod_を 記 述 しなくてもよい コード 4.3 関 数 名 function mod_bbs_getthread(){ // 処 理 ( 例 : 掲 示 板 パーツ(bbs)でスレッド 一 覧 取 得 用 関 数 ) 6
4.1.3. 変 数 名 英 語 キャメルケースで 記 述 し 先 頭 3 桁 にはその 変 数 のデータ 型 を 表 す 文 字 (プリフィックス)を 表 4.1 に 従 って 付 記 する 表 4.1 プリフィックス 一 覧 型 プリフィックス 例 文 字 列 型 (String) str strfilename 整 数 型 (Integer) int intelementid 浮 動 小 数 点 型 (Float) flt fltmathresult 論 理 型 (Boolean) bln blnexecflag 配 列 型 (Array) ary arydatalist クラスインスタンス cls clselement "$i"のような 変 数 名 を 使 用 できるのは 小 さなループ 内 で 使 用 する 場 合 のみと する ループが 20 行 以 上 のコードになるようなら そのループ 変 数 にはユニークな 名 前 を 付 ける 4.1.4. 定 数 すべて 大 文 字 で 記 述 し 単 語 の 区 切 りにはアンダースコアを 使 用 する 例 :モジュールディレクトリの 定 数 MODULE_BASE_DIRECTORY 4.2. 記 述 方 法 の 統 一 4.2.1. コメントの 記 述 (1) 関 数 コメント コード 4.4 の 通 り 関 数 宣 言 の 前 に 説 明 を 記 述 する コード 4.4 関 数 コメント /** * 掲 示 板 パーツブロック 表 示 * * @param int $eid エレメント ID(ブロック ID) * * @return string ブロックに 表 示 する 内 容 */ function mod_bbs_block($eid = 0){ ( 例 : 掲 示 板 パーツ(bbs)ブロック 表 示 関 数 コメント) 7
(2) 処 理 コメント 変 数 代 入 処 理 内 容 等 を 適 宜 記 述 する 4.2.2. インデント インデントは 空 白 4 文 字 または 4 タブで 行 い ファイル 内 でどちらかに 統 一 する 4.2.3. クラス (1) アクセス 修 飾 子 private/protected/public キーワードはコード 4.5 の 通 り プロパティ メソッドに 必 ず 記 述 する コード 4.5 クラス 内 アクセス 制 御 class cls_mod_bbs{ private $strsitename = 'e コミ'; // コメントの 記 述 protected $strsiteurl = ''; // コメントの 記 述 /** * コメントの 記 述 * * */ public function construct(){ /** * コメントの 記 述 * * */ private function _getsitename(){ return $this->strsitename; /** * コメントの 記 述 * * */ static public function getsitename(){ return $this->_getsitename(); ( 例 : 掲 示 板 クラス 宣 言 ) 8
4.2.4. 制 御 構 文 (1) if/else/elseif 条 件 を 指 定 する 括 弧 の 前 に 空 白 を 入 れる また 条 件 指 定 の 括 弧 を 閉 じた 後 にも 空 白 を 入 れる 括 弧 で 囲 まれた 条 件 文 の 中 では 演 算 子 の 前 後 にも 空 白 を 入 れる また 条 件 の 論 理 的 な 区 切 りを 明 確 にするため 条 件 文 の 中 でも 積 極 的 に 括 弧 を 使 用 する 開 始 波 括 弧 は 条 件 文 と 同 じ 行 に 記 述 する 終 了 波 括 弧 は 常 に 改 行 してそれの みで 記 述 する 波 括 弧 の 中 では 空 白 4 文 字 または 4 タブインデントをする コード 4.6 if 制 御 構 文 if ($intnextid!== 2) { $intnextid = 2; ( 例 :if 制 御 構 文 ) 条 件 文 が 複 数 ある 場 合 は 後 から 条 件 句 を 追 加 したり 削 除 したりしたときに 問 題 が 起 こりにくくするために 複 数 行 にわけて 記 述 する その 場 合 は 論 理 演 算 子 の 前 で 改 行 し 条 件 句 の 開 き 括 弧 がそろうように 位 置 を 合 わせる 条 件 部 の 閉 じ 括 弧 と 本 体 の 開 始 波 括 弧 は 空 白 をはさんで 同 じ 行 に 記 述 し イ ンデント 量 は 制 御 構 文 の 開 始 位 置 と 同 じにする コード 4.7 if 制 御 構 文 ( 複 数 条 件 ) if (($strname == $strtestname) && ($intuserid == $inttestid) ($blnexecflag == true) ) { $blnsaveflg = true; ( 例 :if 制 御 構 文 ( 複 数 条 件 )) elseif あるいは else を 含 む if 文 の 決 まりは 通 常 の if と 同 じとする if elseif あるいは else 文 では 波 括 弧 を 省 略 せずに 記 述 する 9
(2) switch 条 件 を 指 定 する 括 弧 の 前 に 空 白 をひとつ 入 れる また 条 件 指 定 の 括 弧 を 閉 じた 後 にも 空 白 をひとつ 入 れる switch 文 の 中 身 は 空 白 4 文 字 または 4 タブインデントをする 各 case 文 の 中 身 は さらに 空 白 4 文 字 または 4 タブインデントをする switch 文 の default は 省 略 しない コード 4.8 switch 制 御 構 文 switch ($intblockid) { case 1: break; case 2: break; default: break; ( 例 :switch 制 御 構 文 ) 注 意 : 各 case の 最 後 に break や return を 記 述 せず 意 図 的 に 次 の case に 処 理 を 流 すという 書 き 方 をする 場 合 は 単 なる 記 述 漏 れと 区 別 するために 意 図 的 に break を 省 略 した というコメントを 含 める switch 構 文 は 極 力 使 用 を 避 ける ( 後 述 (4)switch 構 文 を 参 照 ) 10
(3) 厳 密 な 比 較 の 使 用 比 較 をする 時 はコード 4.9 の 通 り 緩 やかな 比 較 (==/!=)を 使 用 せず 厳 密 な 比 較 (===/!==)を 使 用 する コード 4.9 比 較 // 緩 やかな 比 較 $test = 'test'; if ($test == 0) { // true //==だと true と 判 断 される else{ // false // 厳 密 な 比 較 $test = 'test'; if ($test === 0) { // true else{ // false // 正 常 に 判 断 される ( 例 : 緩 やかな 比 較 と 厳 密 な 比 較 の 処 理 の 違 い) (4) switch 構 文 コード 4.10 の 通 り switch 構 文 が 緩 やかな 比 較 での 判 断 になるので 極 力 使 用 を 避 ける コード 4.10 switch 構 文 ( 緩 やかな 比 較 ) $test = 0; switch ($test) { case 'abc': case 'def': // ここを 通 過 する break; default: // break; ( 例 : 緩 やかな 比 較 により 想 定 外 の 処 理 が 実 行 される) 11
4.2.5. 外 部 ファイル 読 み 込 み コード 4.11 の 通 り 無 条 件 で 読 み 込 む 場 合 は require_once() 何 かしらの 条 件 が 真 だった 場 合 に 読 み 込 む 場 合 は include_once()を 使 用 する コード 4.11 外 部 ファイル 読 み 込 み // require_once require_once('./file.php'); // include_once if ( $blnflg ) { include_once('./file.php'); ( 例 : 外 部 ファイル 読 み 込 み 方 法 の 違 い) 4.2.6. 変 数 の 初 期 化 変 数 の 内 容 を 分 かりやすくなり 処 理 速 度 も 向 上 するため 変 数 の 使 用 時 には 初 期 化 を 行 う 4.2.7. 文 字 列 (1) 展 開 文 字 列 に 変 数 の 展 開 などが 含 まれない 場 合 は シングルクォートで 囲 む 文 字 列 に 変 数 の 展 開 などが 含 まれている 場 合 は ダブルクォートで 囲 む 文 字 列 自 体 にシングルクォートが 含 まれている 場 合 は ダブルクォートで 囲 む (2) 文 字 列 の 連 結 コードを 読 みやすくするため "." 演 算 子 の 前 後 には 常 に 空 白 を 入 れる 複 数 行 にわたる 文 字 列 の 場 合 2 行 目 以 降 の 行 頭 に 空 白 を 入 れ 各 行 の"." 演 算 子 が 最 初 の 行 の"=" 演 算 子 と 同 じ 位 置 にする コード 4.12 文 字 の 連 結 $sql = "SELECT `gid` AS `gid` ". ", `sitename` AS `sitename`". " FROM `page` AS `pg` ". " WHERE `id` = '10001' "; ( 例 :SQL 文 の 生 成 ) 12
4.2.8. 配 列 (1) 数 値 添 字 の 配 列 添 字 として 負 の 数 を 使 用 しないこと 添 え 字 の 値 は 0 から 始 めるようにする 数 値 添 字 の 配 列 を 宣 言 する 場 合 は コードを 読 みやすくするため 要 素 を 区 切 るカンマの 後 に 空 白 を 入 れる コード 4.13 配 列 宣 言 $arydata = array(1, 2, 3, 'e コミ', 'map'); ( 例 : 簡 単 な 配 列 の 宣 言 ) 複 数 行 にまたがる 宣 言 をする 場 合 コード 4.14 の 通 り 配 列 の 最 初 の 要 素 を 次 の 行 から 始 める その 場 合 は 配 列 を 宣 言 した 位 置 からさらに 空 白 4 文 字 または 4 タブインデントした 位 置 で 要 素 をそろえ それ 以 降 のすべての 要 素 を 同 じインデントで 記 述 する 閉 じ 括 弧 はそれのみを 行 に 記 述 し インデント 量 は 配 列 の 宣 言 と 同 じ 位 置 に 記 述 する 要 素 の 追 加 削 除 を 容 易 にする 為 区 切 りカンマは 文 頭 に 記 述 する コード 4.14 配 列 宣 言 ( 複 数 行 ) $samplearray = array( 1, 2, 3, 'Ppfo', 'Studio',$a, $b, $c,56.44, $d, 500 ); ( 例 : 複 数 行 にわたる 配 列 の 宣 言 ) 13
(2) 連 想 配 列 コード 4.15 の 通 り 通 常 の 配 列 と 同 様 に 要 素 を 区 切 るカンマの 後 に 空 白 を 入 れる =>の 前 後 に 空 白 を 入 れる コード 4.15 連 想 配 列 宣 言 $arysample = array('firstkey' => 'firstvalue', 'secondkey' => 'secondvalue'); ( 例 : 簡 単 な 連 想 配 列 宣 言 ) 複 数 行 にまたがる 宣 言 をする 場 合 配 列 の 最 初 の 要 素 を 次 の 行 から 始 める その 場 合 は 配 列 を 宣 言 した 位 置 から 更 に 一 段 インデントした 位 置 で 要 素 を そろえ それ 以 降 すべての 要 素 を 同 じインデントで 記 述 する 閉 じ 括 弧 はひとつの 行 に 記 述 し インデント 量 は 配 列 の 宣 言 と 同 じ 位 置 にす る 可 読 性 を 高 めるため 代 入 演 算 子 "=>" の 位 置 をそろえる 要 素 の 追 加 削 除 を 容 易 にする 為 区 切 りカンマは 文 頭 に 記 述 する コード 4.16 連 想 配 列 宣 言 ( 複 数 行 ) $ arysample = array( 'firstkey' => 'firstvalue','secondkey' => 'secondvalue' ); ( 例 : 複 数 行 にわたる 連 想 配 列 の 宣 言 ) 14
5. JavaScript コーディング 規 約 5.1. 外 部 ファイル 化 5.1.1. 出 力 方 法 同 一 パーツによる 競 合 を 防 ぐために 各 ブロックで 読 み 込 みを 行 い 各 ブロック ID を JavaScript に 記 述 する そのため smarty を 用 いて 出 力 させる 5.1.2. 名 前 空 間 名 前 空 間 を 使 用 する 場 合 コード 5.1 の 通 り 個 々のブロック ID 毎 のファイルの 先 頭 に 名 前 空 間 (*1)を 指 定 する *1 JavaScript には 名 前 空 間 の 概 念 が 存 在 しないため オブジェクトを 代 替 えとし て 使 用 する コード 5.1 名 前 空 間 var ecom; if (!ecom){ ecom = {; if (!ecom.mod_bbs<{$eid>){ ecom.mod_bbs<{$eid> = {; // <{$eid>は smarty 変 数 で 出 力 されるブロック ID // ここから 処 理 を 記 述 ecom.mod_bbs<{$eid>.setting = function(){ ( 例 : 掲 示 板 パーツ(bbs)の 名 前 空 間 ) 15
5.2. 命 名 規 則 5.2.1. クラス (1) クラス 名 パーツレベルでクラスを 宣 言 時 クラス 名 は 処 理 名 とする コード 5.2 クラス 宣 言 ecom.mod_bbs<{$eid>.setting = function(){ // 処 理 ( 例 : 掲 示 板 パーツ(bbs)で 設 定 関 連 クラス 宣 言 ) (2) プロパティ メソッド private プロパティ メソッドには 先 頭 に_(アンダーバー)を 付 記 する コード 5.3 プロパティ メソッド 宣 言 ecom.mod_bbs<{$eid>.setting = function(){ // 設 定 クラス this.numwindowwidth = "width" ; // public 変 数 (プロパティ) var _numwindowheight = "height"; // private 変 数 (プロパティ) _getwindowsize = function(){ // ウィンドウサイズ 取 得 メソッド ecom.mod_bbs<{$eid>.setting.prototype.getframesize = function(){ ( 例 : 掲 示 板 パーツ(bbs)で 設 定 関 連 クラス) 16
5.2.2. 関 数 名 コード 5.4 の 通 り mod_モジュール 名 _ 処 理 名 とし 処 理 名 はキャメルケースで 記 述 する 必 要 によりモジュール 名 の 後 にブロック ID を 付 記 する クラス 内 関 数 では mod_を 記 述 しなくてもよい 式 (var func = function(){)として 記 述 する * * 文 (function func(){)で 記 述 すると どこに 記 述 されているかに 関 わらず ス コープの 一 番 先 頭 に 移 動 されるため function は 式 で 記 述 する コード 5.4 関 数 名 var mod_bbs_getthread = function(){ // 処 理 ( 例 : 掲 示 板 パーツ(bbs)でスレッド 一 覧 取 得 用 関 数 ) 5.2.3. 変 数 名 キャメルケースで 記 述 し 先 頭 3 桁 には 変 数 のデータ 型 を 表 す 文 字 (プリフィッ クス)を 表 5.1 に 従 って 付 記 する 表 5.1 プリフィックス 一 覧 型 プリフィックス 例 文 字 列 型 (string) str strsitename 数 値 型 (number) num numpageid 論 理 型 (Boolean) bln blnexecflag 配 列 型 (Array) ary arydatalist "i"のような 変 数 名 を 使 用 できるのは 小 さなループ 内 で 使 用 する 場 合 のみとす る ループが 20 行 以 上 のコードになるようなら そのループ 変 数 にはユニークな 名 前 を 付 ける 17
5.3. 記 述 方 法 の 統 一 5.3.1. コメントの 記 述 (1) 関 数 コメント コード 5.5 の 通 り 関 数 宣 言 の 前 に 関 数 の 説 明 を 記 述 する コード 5.5 関 数 コメント /** * スレッドタイトルを 20 文 字 とする * * @param string strthreadtitle スレッドタイトル * * @return string スレッドタイトルの 先 頭 20 文 字 */ mod_bbs_block = function(strthreadtitle){ return strthreadtitle.substring(0,20); ( 例 : 関 数 コメント) (2) 処 理 コメント 変 数 代 入 処 理 内 容 等 を 適 宜 記 述 する 5.3.2. インデント インデントは 空 白 4 つ または 4 タブで 行 い ファイル 内 でどちらかに 統 一 す る 5.3.3. 変 数 変 数 宣 言 には 常 に var をつける * * 宣 言 時 に var を 付 けなかった 場 合 その 変 数 はグローバルコンテキストに 置 かれ 既 存 の 変 数 が 汚 染 される 可 能 性 がある また 宣 言 がない 場 合 は その 変 数 がどのスコープなのかが 分 かりづらくなる 18
5.3.4. クラス JavaScript でのクラスの 定 義 は いろんな 方 式 があるが メソッドの 実 装 はプ ロトタイプを 上 書 きし 実 装 する コンストラクタは プロトタイプに 実 装 しコンストラクタ 内 でメンバ 変 数 を 実 装 する コード 5.6 クラス 宣 言 // クラス 定 義 ecom.mod_bbs<{$eid>.setting = function(){ this.initialize.apply(this, arguments); // コンストラクタ ecom.mod_bbs<{$eid>.setting.prototype.initialize = function() { this.numresno = 0; //レス 番 号 ; // メソッド 定 義 ecom.mod_bbs<{$eid>.setting.prototype.getthread = function(){ ( 例 :メソッドが 少 ない 場 合 の 掲 示 板 設 定 クラスの 宣 言 ) コード 5.7 クラス 宣 言 ecom.mod_bbs<{$eid>.setting = function() { this.initialize.apply(this, arguments); ecom.mod_bbs<{$eid>.setting.prototype = { // コンストラクタ initialize: function() { this.numresno = 0; //レス 番 号, // メソッド 定 義 getthread: function() { ; ( 例 :メソッドが 多 い 場 合 掲 示 板 設 定 クラスの 宣 言 ) 19
5.3.5. 制 御 構 文 (1) if/else/elseif 条 件 を 指 定 する 括 弧 の 前 に 空 白 を 入 れる また 条 件 指 定 の 括 弧 を 閉 じた 後 にも 空 白 を 入 れる 括 弧 で 囲 まれた 条 件 文 の 中 では 演 算 子 の 前 後 にも 空 白 を 入 れる また 条 件 の 論 理 的 な 区 切 りを 明 確 にするため 条 件 文 の 中 でも 積 極 的 に 括 弧 を 使 用 する 開 始 波 括 弧 は 条 件 文 と 同 じ 行 に 記 述 する 終 了 波 括 弧 は 常 に 改 行 してそれの みで 記 述 する 波 括 弧 の 中 では 空 白 4 文 字 または 4 タブインデントする コード 5.8 if 制 御 構 文 if (intnextid!= 2) { intnextid = 2; ( 例 :if 制 御 構 文 ) 条 件 文 が 複 数 ある 場 合 は 後 から 条 件 句 を 追 加 したり 削 除 したりしたときに 問 題 が 起 こりにくくするために 複 数 行 にわけて 記 述 する その 場 合 は 論 理 演 算 子 の 前 で 改 行 し 条 件 句 の 開 き 括 弧 がそろうように 位 置 を 合 わせる 条 件 部 の 閉 じ 括 弧 と 本 体 の 開 始 波 括 弧 は 空 白 をはさんで 同 じ 行 に 記 述 し イ ンデント 量 は 制 御 構 文 の 開 始 位 置 と 同 じにする コード 5.9 if 制 御 構 文 ( 複 数 条 件 ) if ((intpageid == intgroupid) && (strsitename == 'test') (strlastupdate!= '') ) { $blnresult = 'ok'; ( 例 :if 制 御 構 文 ( 複 数 条 件 )) elseif あるいは else を 含 む if 文 の 決 まりは 通 常 の if と 同 じとする if elseif あるいは else 文 では 常 に 波 括 弧 を 使 用 する 20
(2) switch 条 件 を 指 定 する 括 弧 の 前 に 空 白 をひとつ 入 れる また 条 件 指 定 の 括 弧 を 閉 じた 後 にも 空 白 をひとつ 入 れる 波 括 弧 の 中 では 空 白 4 文 字 または 4 タブインデントをする 各 case 文 波 括 弧 の 中 では さらに 空 白 4 文 字 または 4 タブインデントを する switch 文 の default は 省 略 しない コード 5.10 switch 制 御 構 文 switch (intblockid) { case 1: break; case 2: break; default: break; ( 例 :switch 制 御 構 文 ) 注 意 : 各 case の 最 後 に break や return を 記 述 せず 意 図 的 に 次 の case に 処 理 を 流 すという 書 き 方 をする 場 合 は 単 なる 記 述 漏 れと 区 別 するために 意 図 的 に break を 省 略 した というコメントを 含 める 5.3.6. 文 字 列 (1) 文 字 列 の 囲 み 文 字 列 は 極 力 シングルクォートで 囲 む (2) 文 字 列 の 連 結 "+" 演 算 子 を 使 用 する 場 合 コードを 読 みやすくするため "+" 演 算 子 の 前 後 には 常 に 空 白 を 入 れる 複 数 行 にわたる 文 字 列 の 場 合 2 行 目 以 降 の 行 頭 に 空 白 を 入 れ 各 行 の"+" 演 算 子 が 最 初 の 行 の"=" 演 算 子 と 同 じ 位 置 にする コード 5.11 文 字 列 の 連 結 $html = '<div class="bbs_title">' + ' 文 字 の 表 示 ' + '</div>'; ( 例 :html 文 字 列 生 成 ) 21
5.3.7. 配 列 (1) 数 値 添 字 の 配 列 添 字 として 負 の 数 を 使 用 しないこと 添 え 字 の 値 は 0 から 始 めるようにする コードを 読 みやすくするため 要 素 を 区 切 るカンマの 後 に 空 白 を 入 れる コード 5.12 配 列 宣 言 arydata = new array(1, 2, 3, 'e コミ', 'map'); もしくは arydata = [1, 2, 3, 'e コミ', 'map']; ( 例 : 配 列 の 宣 言 ) 複 数 行 にまたがる 宣 言 をする 場 合 配 列 の 最 初 の 要 素 を 次 の 行 から 始 める その 場 合 は 配 列 を 宣 言 した 位 置 からさらに 一 段 インデントした 位 置 で 要 素 をそろえ それ 以 降 のすべての 要 素 を 同 じインデントで 記 述 する 閉 じ 括 弧 はひとつの 行 に 記 述 し インデント 量 は 配 列 の 宣 言 と 同 じ 位 置 に 記 述 する 要 素 の 追 加 削 除 を 容 易 にする 為 区 切 りカンマは 文 頭 に 記 述 する コード 5.13 配 列 宣 言 ( 複 数 行 ) arysamplearray = new array( 1, 2, 3, 'Ppfo', 'Studio',56.44, $d, 500 ); ( 例 : 複 数 行 にわたる 配 列 の 宣 言 ) 22
(2) 連 想 配 列 (オブジェクト) 通 常 の 配 列 と 同 様 に 要 素 を 区 切 るカンマの 後 に 空 白 を 入 れる 代 入 演 算 子 の 前 後 に 空 白 を 入 れる コード 5.14 連 想 配 列 宣 言 arysample = {'firstkey' : 'firstvalue', 'secondkey' : 'secondvalue'; ( 例 : 連 想 配 列 の 宣 言 ) 複 数 行 にまたがる 宣 言 をする 場 合 配 列 の 最 初 の 要 素 を 次 の 行 から 始 める その 場 合 は 配 列 を 宣 言 した 位 置 から 更 に 一 段 インデントした 位 置 で 要 素 を そろえ それ 以 降 すべての 要 素 を 同 じインデントで 記 述 する 閉 じ 括 弧 はひとつの 行 に 記 述 し インデント 量 は 配 列 の 宣 言 と 同 じ 位 置 にす る 可 読 性 を 高 めるため 代 入 演 算 子 ":" の 位 置 をそろえる 要 素 の 追 加 削 除 を 容 易 にする 為 区 切 りカンマは 文 頭 に 記 述 する コード 5.15 連 想 配 列 宣 言 ( 複 数 行 ) $ arysample = { 'firstkey' : 'firstvalue','secondkey' : 'secondvalue' ; ( 例 : 複 数 行 にわたる 連 想 配 列 の 宣 言 ) 23