命名規則「3ヶ月後の自分自身に優しく、チームに優しく、まだ見ぬメンバーに優しく」

  • 15
    Like
  • 0
    Comment
More than 1 year has passed since last update.

はじめに

「優しいIT」という理念のもとITコサルタントをしている。亀井亮介で〜す
システム開発する上で、品質・保守性の向上を考えると、コーディング規則や命名規則などの「ルール」が必要です。
「資格試験勉強すればするほど社会貢献ができるe-lerning(開発中)」で利用しているコーディング規則の例です。
ソースのプログラミング言語はPHPで、フレームワークはFuelPHPを使っています。

命名規則「3ヶ月後の自分自身に優しく、チームに優しく、まだ見ぬメンバーに優しく」

1. 変数名・関数名は「短いコメント」と思い、明確で具体的で誤解のない単語を選ぶ(汎用的なtmpなどを使わない)

question.php
// 下記の変数は「問題の解説」という意味(データベースのカラム名と同じ)
$question_commentary

2. 接頭辞・接尾辞をうまく使い1.を実現する

question.php
// 正解フラグ フラグを表す接尾辞が付いています。
$correct_flag = 1;

3. データベースのカラム名・変数名・inputタグのname属性は統一する

question.php
echo
    /*
     * question_commentaryは、テーブルのカラム名
     */
    Form::textarea('question_commentary'
            , $before_questions->question_commentary
            , array(
                  'class' => 'col-md-8 form-control'
                , 'rows' => 8
                , 'placeholder'=>'元の解説'
                , "readonly"=>"readonly"
            )
    );

4. 省略は誰でもわかる単語だけ(cntなど)、よくわからない省略は使わない(BEManagerってなに?BackEndManager)

question.php
/*
 * ●命名規則「3ヶ月後の自分自身に優しく、チームに優しく、まだ見ぬメンバーに優しく」
 */
'question_id'  => $question_last_id,   // 問題番号(固定)
'choice_num'   => $choice_num,         // 選択肢番号
'correct_flag' => $correct_flag,       // 正解
'choice_body'  => Input::post('choice_body_'.$choice_num), // 選択肢

5. フレームワークの作法に従い、ライブラリを活用することで、コーディング負荷は軽減される

question.php
/*
 * 問題取得成功
 *
 * 選択肢を取得
 * 引数が一つだけなら、find_by(FuelPHPの関数)を使う
 *
 */
if ( ! $data['choices'] = Model_Choice::find_by('question_id', $data['questions']->id))
{
// 略
}

6. ネストは浅くし、巨大なプログラムは分割する 変数のスコープを明確かつ、短くする

例はなし

7. 変数は一度だけ書き込み、無駄な変数は削除する

question.php
/*
 * データを取得
 * ・問題1レコード
 * ・選択肢4レコード
 * ・小項目の問題(リンク)多レコード
 * ・中項目のキーワード多レコード
 *
 * ●命名規則「3ヶ月後の自分自身に優しく、チームに優しく、まだ見ぬメンバーに優しく」
 * 7. 変数は一度だけ書き込み、無駄な変数は削除する
 *
 */
//-- WHEREを整理
$question_wheres['question_number'] = $question_number;
$question_wheres['round_id']= $round_id;
//-- データ取得 $question_wheresの役目は終了
$data['questions'] = Model_Question::get_questions($question_wheres, 1);
//-- 変数スコープを明示
$question_wheres = null;

8. FROMに当たるテーブル名とモデルを一致させる。

question.php
/*
 * questionはテーブル名
 */
class Model_Question extends Model
{
    /*
     * questionテーブル
     */
// 略
}

おすすめ本

リーダブルコード
レガシーコード改善ガイド

サイトマップ(未投稿あり)

理念・価値・ビジョン・使命

テスト駆動開発を重点においた規則

コーディング規則「優しいコードを書こう」(FuelPHP)
命名規則「3ヶ月後の自分自身に優しく、チームに優しく、まだ見ぬメンバーに優しく」

開発しやすい環境構築(Docker+PHP)

Dockerを利用しApacheにPHP環境 + Eclipseを連携
Dockerを利用したFuelPHP開発環境構築
Docker利用したFuelPHP開発環境の初期設定とscaffoldを利用してCRUDスケルトン作成
FuelPHPのデータベースマイグレーション

Docker+PythonでWebアプリケーション開発

Docker上のCentOSにPython3と、関連ライブラリpip, virtualenvとフレームワークDjango, bottle, Flaskのインストール!これらをまとめたDockerfile付き!

Raspberry Pi 3 (ラズパイ)とpythonで遊ぼう

Raspberry Pi 3インストール→無線LAN→日本語入出力→Macから操作
Raspberry Pi 3でプログラミングをする Node-REDと普通にプログラミング
Raspberry Pi 3でpythonを使いLEDを光らせる(Hello World)
Raspberry Pi 3でスイッチの状態を検出する
Raspberry Pi 3でpythonを使いサーボモータを動かす