Help us understand the problem. What is going on with this article?

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

More than 3 years have 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を使いサーボモータを動かす

RyosukeKamei
「優しいIT」という理念の基、ITコンサルタントをしている亀井亮介と申します! 現在、仕事では要求分析から要件定義を中心に上流工程をしていますが、プログラムも書きます!2016年現在、ベンダーマネジメントが主な業務です! 「資格試験勉強をすればするほど、社会貢献ができる?」ウェブサイトを運営しており、並行してシステム構築中 http://korejoap.info/ 子供が3人いまーす
http://sr2s.org/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away