SlideShare une entreprise Scribd logo
1  sur  35
Télécharger pour lire hors ligne
命名規則のススメ

    @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
命名規則を正しく守って、

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

Contenu connexe

Tendances

Pythonによる黒魔術入門
Pythonによる黒魔術入門Pythonによる黒魔術入門
Pythonによる黒魔術入門大樹 小倉
 
カルマンフィルタ入門
カルマンフィルタ入門カルマンフィルタ入門
カルマンフィルタ入門Yasunori Nihei
 
確率モデルを用いた3D点群レジストレーション
確率モデルを用いた3D点群レジストレーション確率モデルを用いた3D点群レジストレーション
確率モデルを用いた3D点群レジストレーションKenta Tanaka
 
backbone としての timm 入門
backbone としての timm 入門backbone としての timm 入門
backbone としての timm 入門Takuji Tahara
 
DQNからRainbowまで 〜深層強化学習の最新動向〜
DQNからRainbowまで 〜深層強化学習の最新動向〜DQNからRainbowまで 〜深層強化学習の最新動向〜
DQNからRainbowまで 〜深層強化学習の最新動向〜Jun Okumura
 
[DL輪読会]SeqGan Sequence Generative Adversarial Nets with Policy Gradient
[DL輪読会]SeqGan Sequence Generative Adversarial Nets with Policy Gradient[DL輪読会]SeqGan Sequence Generative Adversarial Nets with Policy Gradient
[DL輪読会]SeqGan Sequence Generative Adversarial Nets with Policy GradientDeep Learning JP
 
分散型強化学習手法の最近の動向と分散計算フレームワークRayによる実装の試み
分散型強化学習手法の最近の動向と分散計算フレームワークRayによる実装の試み分散型強化学習手法の最近の動向と分散計算フレームワークRayによる実装の試み
分散型強化学習手法の最近の動向と分散計算フレームワークRayによる実装の試みSusumuOTA
 
[DL輪読会]Wasserstein GAN/Towards Principled Methods for Training Generative Adv...
[DL輪読会]Wasserstein GAN/Towards Principled Methods for Training Generative Adv...[DL輪読会]Wasserstein GAN/Towards Principled Methods for Training Generative Adv...
[DL輪読会]Wasserstein GAN/Towards Principled Methods for Training Generative Adv...Deep Learning JP
 
[DL輪読会]Decision Transformer: Reinforcement Learning via Sequence Modeling
[DL輪読会]Decision Transformer: Reinforcement Learning via Sequence Modeling[DL輪読会]Decision Transformer: Reinforcement Learning via Sequence Modeling
[DL輪読会]Decision Transformer: Reinforcement Learning via Sequence ModelingDeep Learning JP
 
レコメンドアルゴリズムの基本と周辺知識と実装方法
レコメンドアルゴリズムの基本と周辺知識と実装方法レコメンドアルゴリズムの基本と周辺知識と実装方法
レコメンドアルゴリズムの基本と周辺知識と実装方法Takeshi Mikami
 
ドメインオブジェクトの見つけ方・作り方・育て方
ドメインオブジェクトの見つけ方・作り方・育て方ドメインオブジェクトの見つけ方・作り方・育て方
ドメインオブジェクトの見つけ方・作り方・育て方増田 亨
 
強化学習と逆強化学習を組み合わせた模倣学習
強化学習と逆強化学習を組み合わせた模倣学習強化学習と逆強化学習を組み合わせた模倣学習
強化学習と逆強化学習を組み合わせた模倣学習Eiji Uchibe
 
多様な強化学習の概念と課題認識
多様な強化学習の概念と課題認識多様な強化学習の概念と課題認識
多様な強化学習の概念と課題認識佑 甲野
 
【論文紹介】Deep Reinforcement Learning for Solving the Vehicle Routing Problem

【論文紹介】Deep Reinforcement Learning for Solving the Vehicle Routing Problem
【論文紹介】Deep Reinforcement Learning for Solving the Vehicle Routing Problem

【論文紹介】Deep Reinforcement Learning for Solving the Vehicle Routing Problem
Tomoyuki Hioki
 
高速な倍精度指数関数expの実装
高速な倍精度指数関数expの実装高速な倍精度指数関数expの実装
高速な倍精度指数関数expの実装MITSUNARI Shigeo
 
分散学習のあれこれ~データパラレルからモデルパラレルまで~
分散学習のあれこれ~データパラレルからモデルパラレルまで~分散学習のあれこれ~データパラレルからモデルパラレルまで~
分散学習のあれこれ~データパラレルからモデルパラレルまで~Hideki Tsunashima
 
Sliced Wasserstein Distance for Learning Gaussian Mixture Models
Sliced Wasserstein Distance for Learning Gaussian Mixture ModelsSliced Wasserstein Distance for Learning Gaussian Mixture Models
Sliced Wasserstein Distance for Learning Gaussian Mixture ModelsFujimoto Keisuke
 
【DL輪読会】Scaling Laws for Neural Language Models
【DL輪読会】Scaling Laws for Neural Language Models【DL輪読会】Scaling Laws for Neural Language Models
【DL輪読会】Scaling Laws for Neural Language ModelsDeep Learning JP
 

Tendances (20)

Pythonによる黒魔術入門
Pythonによる黒魔術入門Pythonによる黒魔術入門
Pythonによる黒魔術入門
 
カルマンフィルタ入門
カルマンフィルタ入門カルマンフィルタ入門
カルマンフィルタ入門
 
確率モデルを用いた3D点群レジストレーション
確率モデルを用いた3D点群レジストレーション確率モデルを用いた3D点群レジストレーション
確率モデルを用いた3D点群レジストレーション
 
backbone としての timm 入門
backbone としての timm 入門backbone としての timm 入門
backbone としての timm 入門
 
DQNからRainbowまで 〜深層強化学習の最新動向〜
DQNからRainbowまで 〜深層強化学習の最新動向〜DQNからRainbowまで 〜深層強化学習の最新動向〜
DQNからRainbowまで 〜深層強化学習の最新動向〜
 
[DL輪読会]SeqGan Sequence Generative Adversarial Nets with Policy Gradient
[DL輪読会]SeqGan Sequence Generative Adversarial Nets with Policy Gradient[DL輪読会]SeqGan Sequence Generative Adversarial Nets with Policy Gradient
[DL輪読会]SeqGan Sequence Generative Adversarial Nets with Policy Gradient
 
分散型強化学習手法の最近の動向と分散計算フレームワークRayによる実装の試み
分散型強化学習手法の最近の動向と分散計算フレームワークRayによる実装の試み分散型強化学習手法の最近の動向と分散計算フレームワークRayによる実装の試み
分散型強化学習手法の最近の動向と分散計算フレームワークRayによる実装の試み
 
明日使えないすごいビット演算
明日使えないすごいビット演算明日使えないすごいビット演算
明日使えないすごいビット演算
 
[DL輪読会]Wasserstein GAN/Towards Principled Methods for Training Generative Adv...
[DL輪読会]Wasserstein GAN/Towards Principled Methods for Training Generative Adv...[DL輪読会]Wasserstein GAN/Towards Principled Methods for Training Generative Adv...
[DL輪読会]Wasserstein GAN/Towards Principled Methods for Training Generative Adv...
 
[DL輪読会]Decision Transformer: Reinforcement Learning via Sequence Modeling
[DL輪読会]Decision Transformer: Reinforcement Learning via Sequence Modeling[DL輪読会]Decision Transformer: Reinforcement Learning via Sequence Modeling
[DL輪読会]Decision Transformer: Reinforcement Learning via Sequence Modeling
 
レコメンドアルゴリズムの基本と周辺知識と実装方法
レコメンドアルゴリズムの基本と周辺知識と実装方法レコメンドアルゴリズムの基本と周辺知識と実装方法
レコメンドアルゴリズムの基本と周辺知識と実装方法
 
A3C解説
A3C解説A3C解説
A3C解説
 
ドメインオブジェクトの見つけ方・作り方・育て方
ドメインオブジェクトの見つけ方・作り方・育て方ドメインオブジェクトの見つけ方・作り方・育て方
ドメインオブジェクトの見つけ方・作り方・育て方
 
強化学習と逆強化学習を組み合わせた模倣学習
強化学習と逆強化学習を組み合わせた模倣学習強化学習と逆強化学習を組み合わせた模倣学習
強化学習と逆強化学習を組み合わせた模倣学習
 
多様な強化学習の概念と課題認識
多様な強化学習の概念と課題認識多様な強化学習の概念と課題認識
多様な強化学習の概念と課題認識
 
【論文紹介】Deep Reinforcement Learning for Solving the Vehicle Routing Problem

【論文紹介】Deep Reinforcement Learning for Solving the Vehicle Routing Problem
【論文紹介】Deep Reinforcement Learning for Solving the Vehicle Routing Problem

【論文紹介】Deep Reinforcement Learning for Solving the Vehicle Routing Problem

 
高速な倍精度指数関数expの実装
高速な倍精度指数関数expの実装高速な倍精度指数関数expの実装
高速な倍精度指数関数expの実装
 
分散学習のあれこれ~データパラレルからモデルパラレルまで~
分散学習のあれこれ~データパラレルからモデルパラレルまで~分散学習のあれこれ~データパラレルからモデルパラレルまで~
分散学習のあれこれ~データパラレルからモデルパラレルまで~
 
Sliced Wasserstein Distance for Learning Gaussian Mixture Models
Sliced Wasserstein Distance for Learning Gaussian Mixture ModelsSliced Wasserstein Distance for Learning Gaussian Mixture Models
Sliced Wasserstein Distance for Learning Gaussian Mixture Models
 
【DL輪読会】Scaling Laws for Neural Language Models
【DL輪読会】Scaling Laws for Neural Language Models【DL輪読会】Scaling Laws for Neural Language Models
【DL輪読会】Scaling Laws for Neural Language Models
 

命名規則のススメ