SlideShare a Scribd company logo
命名規則のススメ

    @natrium11321
2013年3月6日, @久留米高専
おしながき
 1. 命名規則って、何?
  人名、学名、有機化合物の名前を例に

 2. 命名規則、色々なルール
  名前のスタイル、ハンガリアン記法

 3. これがプロラボ部の命名規則だ!
  英語力も必要です
おしながき
 1. 命名規則って、何?
  人名、学名、有機化合物の名前を例に

 2. 命名規則、色々なルール
  名前のスタイル、ハンガリアン記法

 3. これがプロラボ部の命名規則だ!
  英語力も必要です
命名規則って、何?
名前をつける時の規則 約束事
          ・
         秀忠家光
       家康    家綱
              綱吉
               家宣
               家継
               吉宗
              家重
            家治
          家斉
          家慶
          家定


         家茂
         慶喜
命名規則の例|人名

  太郎 孝介   男の子
  修平 翔太   ◯郎、◯介、◯平
  一樹 正人   ◯太、◯樹、◯人


  花子 雅美   女の子
  麻衣 礼奈   ◯子、◯美、◯衣
  美里 春菜   ◯奈、◯里、◯菜
命名規則の例|学名
原種植物
Prunus dulcis
アーモンド:バラ科サクラ属ヘントウ

Prunus mume
ウメ:バラ科サクラ属ウメ



           属名        種小名
           Prunus    campanulata
           バラ科サクラ属   カンヒザクラ
命名規則の例|学名
交配種植物
Prunus ×yedoensis ‘Somei-Yoshino’
ソメイヨシノ




父親              母親           ‘   園芸品種名           ’
Prunus      ×   yedoensis        Somei-Yoshino
エドヒガン           オオシマザクラ          ソメイヨシノ
命名規則の例|有機化合物

                       Para-
                       配置が対頂の

                       di
                       2つの

                       chloro
                       塩素を持つ
Para-dichlorobenzene
パラジクロロベンゼン
                       benzene
                       ベンゼン      Benzene
                                 ベンゼン
命名規則の例|有機化合物
                                    1
                      1,4-      6       2
                      1番と4番に

                      di                3
                                5
                      2つの
                                    4
                      chloro
                      塩素を持つ
1,4-dichlorobenzene
1,4-ジクロロベンゼン
                      benzene
                      ベンゼン
命名規則の例|有機化合物




1,2-              1,3-              1,4-
dichlorobenzene   dichlorobenzene   dichlorobenzene
1,2-ジクロロベンゼン      1,3-ジクロロベンゼン      1,4-ジクロロベンゼン
命名規則の例|有機化合物




Ortho-            Meta-             Para-
dichlorobenzene   dichlorobenzene   dichlorobenzene
オルトジクロロベンゼン       メタジクロロベンゼン        パラジクロロベンゼン
命名規則の例|有機化合物
これは?
       “Para-dibromobenzene”
                   Para-
                   配置が対頂の

                   di
                   2つの

                   bromo
                   臭素を持つ

                   benzene
                   ベンゼン
命名規則が大事な理由
役割・性質の推測補助
名前を見るだけで名付けられた物の役割や性質を
推測できる

          Prunus
   翔子
                          Meta-
          salicina   dibromobenzene




  女の子!   サクラ属!               !
命名規則が大事な理由
役割・性質の推測補助
名前を見るだけで名付けられた物の役割や性質を
他人でも推測できる


    命名者が他人でも推測できる


    集団開発において特に大事!
       変数名・関数名など
命名規則が存在しない例
命名規則が存在しない例
int   t;
int   tt;
int   ttt;                       ,, -―-、
                               /        ヽ
int   tttt;           / ̄ ̄/ /i⌒ヽ、|
                     / (゜)/     / /
                   /     ト、.,../ ,ー-、
                 =彳        \\t゚。ttttヽ。、t
                 /              \\゚tttttttto
               /              /⌒ ヽ ヽUtttto
              /             │        `ヽUttttl
              │              │          Utttl
                                         |t!
                                         U
命名規則が存在しない例
 class surfaceviewview
   extends View {
      ...
 }              ____
              /        \
           /      ⌒ ⌒\           びゅーびゅー・・・!?
         /      (◯) (◯) \
         |    、" ゙)(__人__)" )         ___________
         \         。` ⌒゚:j´ ,/ j゙~~| | |          |
   __/                      \ |__| | |            |
   || /     ,                 \n|| | |            |
   ||/     /                r. ( こ) | |           |
   | | | ⌒ ーnnn              |\ (⊆ソ .|_|___________|
    ̄ \__、("二) ̄ ̄ ̄ ̄ ̄l二二l二二 _|_|__|_
おしながき
 1. 命名規則って、何?
  人名、学名、有機化合物の名前を例に

 2. 命名規則、色々なルール
  名前のスタイル、ハンガリアン記法

 3. これがプロラボ部の命名規則だ!
  英語力も必要です
名前のスタイル
 ケース名                  例

 全部小文字                 getusername

 Camel ケース             getUserName

 Pascal ケース            GetUserName

 Snake ケース             get_user_name

 Screaming Snake ケース   GET_USER_NAME
どれを使おう?
基本は使う言語に合わせるべき
標準ライブラリの命名規則を覗いてみよう!
言語例|C/C++
                                全部小文字
                           名前空間名は


  using namespace std;
                               クラス名はSnake
  class user_information
  {
                             メンバ変数名はSnake
  public:
      int age;
      int get_age()
      {                      メンバ関数名はSnake
          return age;
      }
  }
言語例|Java
                        パッケージ名は全部小文字


  import java.util.*;

  class UserInformation
                                クラス名は   Pascal
                              フィールド名はCamel
  {
      public int age;
      public int getAge() {
          return age;
      }                        メソッド名はCamel
  }
言語例|C#
                              名前空間名はPascal


  using System.Drawing;

  class UserInformation
                                クラス名は   Pascal
                              フィールド名はPascal
  {
      public int Age;
      public int Weight
         { get; set; }        プロパティ名はPascal
      public int GetAge() {
          return age;
      }                       メソッド名はPascal
  }
その他の命名スタイル
各言語だいたい共通
定数はScreaming Snake記法
   const int MAX_SIZE = 100;

   final int MAX_SIZE = 100;

   static const int MAX_SIZE = 100;
その他の命名スタイル
ハンガリアン記法
型やスコープの略称を名前の先頭に付ける記法


        MFC - Microsoft Foundation Class
 標準     CArray, CButton, …
ライブラリ
 採用例    C#.NET
        IComparable, IDisposable, …
ハンガリアン記法の例
 接頭辞   意味        例

 i     int型      iPower

 b     bool型     bFlag

 C     クラス       CString

 I     インタフェース   IDrawable

 g_    グローバル変数   g_number

 m_    メンバ変数     m_length
どれを使おう?
基本は使う言語に合わせるべき
但し個人的にはクラス名はC++も
Pascal記法にするのが好き
ハンガリアン記法はあんまり好きじゃない


あとは正直好みの問題
集団開発では最初に共通の規約を決めておく
毎回守らないといけないのか?
変数の見える範囲を考える
クラスのpublicなメンバは他人も見る
privateなメンバやローカル変数は自分しか見ない
おしながき
 1. 命名規則って、何?
  人名、学名、有機化合物の名前を例に

 2. 命名規則、色々なルール
  名前のスタイル、ハンガリアン記法

 3. これがプロラボ部の命名規則だ!
  英語力も必要です
1. 名前は英語で
You are prohibited to use Japanese.
      int kosuu;
      char namae[256];
      int kakeru(int kou, int otsu);


      int number;
      char name[256];
      int multiply(int a, int b);
2. クラス・変数・フィールドは名詞

「名前」を表す

   int sent;




   int sentNumber;
3. 関数・メソッド名は動詞
「動作」を表す

   int number();




   int getNumber();
4. その他細かいルール
bool型変数とboolを返す関数は
状態動詞・be動詞・助動詞・完了形
   bool   containsKey(int key);   //   状態動詞
   bool   isAsleep;               //   be動詞
   bool   canSend();              //   助動詞
   bool   hasExpired();           //   現在完了形




   状態動詞と現在完了のhaveには
      三単現のsを付ける
4. その他細かいルール
単語の対義語を意識する
   start   stop

   begin   end

   add     remove

   get     set

   first   last

   send    receive
命名規則を正しく守って、

  優雅で健康的な
プログラミングライフを。

More Related Content

What's hot

20分くらいでわかった気分になれるC++20コルーチン
20分くらいでわかった気分になれるC++20コルーチン20分くらいでわかった気分になれるC++20コルーチン
20分くらいでわかった気分になれるC++20コルーチン
yohhoy
 
Pythonによる黒魔術入門
Pythonによる黒魔術入門Pythonによる黒魔術入門
Pythonによる黒魔術入門
大樹 小倉
 
Amazon Redshiftによるリアルタイム分析サービスの構築
Amazon Redshiftによるリアルタイム分析サービスの構築Amazon Redshiftによるリアルタイム分析サービスの構築
Amazon Redshiftによるリアルタイム分析サービスの構築
Minero Aoki
 
PostgreSQL Unconference #29 Unicode IVS
PostgreSQL Unconference #29 Unicode IVSPostgreSQL Unconference #29 Unicode IVS
PostgreSQL Unconference #29 Unicode IVS
Noriyoshi Shinoda
 
イミュータブルデータモデル(入門編)
イミュータブルデータモデル(入門編)イミュータブルデータモデル(入門編)
イミュータブルデータモデル(入門編)
Yoshitaka Kawashima
 
JSF++って何
JSF++って何JSF++って何
JSF++って何
Masateru Suzuki
 
多目的強凸最適化のパレート集合のトポロジー
多目的強凸最適化のパレート集合のトポロジー多目的強凸最適化のパレート集合のトポロジー
多目的強凸最適化のパレート集合のトポロジー
KLab Inc. / Tech
 
Quine・難解プログラミングについて
Quine・難解プログラミングについてQuine・難解プログラミングについて
Quine・難解プログラミングについて
mametter
 
世界一わかりやすいClean Architecture
世界一わかりやすいClean Architecture世界一わかりやすいClean Architecture
世界一わかりやすいClean Architecture
Atsushi Nakamura
 
プログラムの処方箋~健康なコードと病んだコード
プログラムの処方箋~健康なコードと病んだコードプログラムの処方箋~健康なコードと病んだコード
プログラムの処方箋~健康なコードと病んだコード
Shigenori Sagawa
 
Kensuke Aihara
Kensuke AiharaKensuke Aihara
Kensuke Aihara
Suurist
 
今日からできる!簡単 .NET 高速化 Tips
今日からできる!簡単 .NET 高速化 Tips今日からできる!簡単 .NET 高速化 Tips
今日からできる!簡単 .NET 高速化 Tips
Takaaki Suzuki
 
プログラムを高速化する話
プログラムを高速化する話プログラムを高速化する話
プログラムを高速化する話
京大 マイコンクラブ
 
ReactiveだけじゃないSpring 5 & Spring Boot 2新機能解説
ReactiveだけじゃないSpring 5 & Spring Boot 2新機能解説ReactiveだけじゃないSpring 5 & Spring Boot 2新機能解説
ReactiveだけじゃないSpring 5 & Spring Boot 2新機能解説
Masatoshi Tada
 
CEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭する
CEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭するCEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭する
CEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭する
Yoshifumi Kawai
 
オブジェクト指向エクササイズのススメ
オブジェクト指向エクササイズのススメオブジェクト指向エクササイズのススメ
オブジェクト指向エクササイズのススメYoji Kanno
 
明日からはじめられる Docker + さくらvpsを使った開発環境構築
明日からはじめられる Docker + さくらvpsを使った開発環境構築明日からはじめられる Docker + さくらvpsを使った開発環境構築
明日からはじめられる Docker + さくらvpsを使った開発環境構築
MILI-LLC
 
並列化による高速化
並列化による高速化 並列化による高速化
並列化による高速化
sakura-mike
 
RDRAにおける合意形成の仕組み
RDRAにおける合意形成の仕組みRDRAにおける合意形成の仕組み
RDRAにおける合意形成の仕組み
Zenji Kanzaki
 
Redmineをちょっと便利に! プログラミング無しで使ってみるREST API
Redmineをちょっと便利に! プログラミング無しで使ってみるREST APIRedmineをちょっと便利に! プログラミング無しで使ってみるREST API
Redmineをちょっと便利に! プログラミング無しで使ってみるREST API
Go Maeda
 

What's hot (20)

20分くらいでわかった気分になれるC++20コルーチン
20分くらいでわかった気分になれるC++20コルーチン20分くらいでわかった気分になれるC++20コルーチン
20分くらいでわかった気分になれるC++20コルーチン
 
Pythonによる黒魔術入門
Pythonによる黒魔術入門Pythonによる黒魔術入門
Pythonによる黒魔術入門
 
Amazon Redshiftによるリアルタイム分析サービスの構築
Amazon Redshiftによるリアルタイム分析サービスの構築Amazon Redshiftによるリアルタイム分析サービスの構築
Amazon Redshiftによるリアルタイム分析サービスの構築
 
PostgreSQL Unconference #29 Unicode IVS
PostgreSQL Unconference #29 Unicode IVSPostgreSQL Unconference #29 Unicode IVS
PostgreSQL Unconference #29 Unicode IVS
 
イミュータブルデータモデル(入門編)
イミュータブルデータモデル(入門編)イミュータブルデータモデル(入門編)
イミュータブルデータモデル(入門編)
 
JSF++って何
JSF++って何JSF++って何
JSF++って何
 
多目的強凸最適化のパレート集合のトポロジー
多目的強凸最適化のパレート集合のトポロジー多目的強凸最適化のパレート集合のトポロジー
多目的強凸最適化のパレート集合のトポロジー
 
Quine・難解プログラミングについて
Quine・難解プログラミングについてQuine・難解プログラミングについて
Quine・難解プログラミングについて
 
世界一わかりやすいClean Architecture
世界一わかりやすいClean Architecture世界一わかりやすいClean Architecture
世界一わかりやすいClean Architecture
 
プログラムの処方箋~健康なコードと病んだコード
プログラムの処方箋~健康なコードと病んだコードプログラムの処方箋~健康なコードと病んだコード
プログラムの処方箋~健康なコードと病んだコード
 
Kensuke Aihara
Kensuke AiharaKensuke Aihara
Kensuke Aihara
 
今日からできる!簡単 .NET 高速化 Tips
今日からできる!簡単 .NET 高速化 Tips今日からできる!簡単 .NET 高速化 Tips
今日からできる!簡単 .NET 高速化 Tips
 
プログラムを高速化する話
プログラムを高速化する話プログラムを高速化する話
プログラムを高速化する話
 
ReactiveだけじゃないSpring 5 & Spring Boot 2新機能解説
ReactiveだけじゃないSpring 5 & Spring Boot 2新機能解説ReactiveだけじゃないSpring 5 & Spring Boot 2新機能解説
ReactiveだけじゃないSpring 5 & Spring Boot 2新機能解説
 
CEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭する
CEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭するCEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭する
CEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭する
 
オブジェクト指向エクササイズのススメ
オブジェクト指向エクササイズのススメオブジェクト指向エクササイズのススメ
オブジェクト指向エクササイズのススメ
 
明日からはじめられる Docker + さくらvpsを使った開発環境構築
明日からはじめられる Docker + さくらvpsを使った開発環境構築明日からはじめられる Docker + さくらvpsを使った開発環境構築
明日からはじめられる Docker + さくらvpsを使った開発環境構築
 
並列化による高速化
並列化による高速化 並列化による高速化
並列化による高速化
 
RDRAにおける合意形成の仕組み
RDRAにおける合意形成の仕組みRDRAにおける合意形成の仕組み
RDRAにおける合意形成の仕組み
 
Redmineをちょっと便利に! プログラミング無しで使ってみるREST API
Redmineをちょっと便利に! プログラミング無しで使ってみるREST APIRedmineをちょっと便利に! プログラミング無しで使ってみるREST API
Redmineをちょっと便利に! プログラミング無しで使ってみるREST API
 

命名規則のススメ