SlideShare a Scribd company logo
1 of 35
Download to read offline
命名規則のススメ

    @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

モバイル通信を使わない 近接端末間通信対戦のレシピ
モバイル通信を使わない 近接端末間通信対戦のレシピモバイル通信を使わない 近接端末間通信対戦のレシピ
モバイル通信を使わない 近接端末間通信対戦のレシピNakamuraTaro
 
暗号技術の実装と数学
暗号技術の実装と数学暗号技術の実装と数学
暗号技術の実装と数学MITSUNARI Shigeo
 
マイクロサービスに至る歴史とこれから - XP祭り2021
マイクロサービスに至る歴史とこれから - XP祭り2021マイクロサービスに至る歴史とこれから - XP祭り2021
マイクロサービスに至る歴史とこれから - XP祭り2021Yusuke Suzuki
 
ネットストーカー御用達OSINTツールBlackBirdを触ってみた.pptx
ネットストーカー御用達OSINTツールBlackBirdを触ってみた.pptxネットストーカー御用達OSINTツールBlackBirdを触ってみた.pptx
ネットストーカー御用達OSINTツールBlackBirdを触ってみた.pptxShota Shinogi
 
三宅 陽一郎 プロフィール(2017_11_11 作成)
三宅 陽一郎 プロフィール(2017_11_11 作成)三宅 陽一郎 プロフィール(2017_11_11 作成)
三宅 陽一郎 プロフィール(2017_11_11 作成)Youichiro Miyake
 
テスト駆動開発のはじめ方
テスト駆動開発のはじめ方テスト駆動開発のはじめ方
テスト駆動開発のはじめ方Shuji Watanabe
 
「インシデント対応ボードゲーム」の遊び方
「インシデント対応ボードゲーム」の遊び方「インシデント対応ボードゲーム」の遊び方
「インシデント対応ボードゲーム」の遊び方歩 奥山
 
TDD のこころ
TDD のこころTDD のこころ
TDD のこころTakuto Wada
 
Android向けUnity製ゲーム最適化のためのCI/CDと連携した自動プロファイリングシステム
Android向けUnity製ゲーム最適化のためのCI/CDと連携した自動プロファイリングシステムAndroid向けUnity製ゲーム最適化のためのCI/CDと連携した自動プロファイリングシステム
Android向けUnity製ゲーム最適化のためのCI/CDと連携した自動プロファイリングシステムKLab Inc. / Tech
 
それはYAGNIか? それとも思考停止か?
それはYAGNIか? それとも思考停止か?それはYAGNIか? それとも思考停止か?
それはYAGNIか? それとも思考停止か?Yoshitaka Kawashima
 
Python におけるドメイン駆動設計(戦術面)の勘どころ
Python におけるドメイン駆動設計(戦術面)の勘どころPython におけるドメイン駆動設計(戦術面)の勘どころ
Python におけるドメイン駆動設計(戦術面)の勘どころJunya Hayashi
 
CRC-32
CRC-32CRC-32
CRC-327shi
 
プログラマが欲しい仕様書とは
プログラマが欲しい仕様書とはプログラマが欲しい仕様書とは
プログラマが欲しい仕様書とはKatsutoshi Makino
 
DXとかDevOpsとかのなんかいい感じのやつ 富士通TechLive
DXとかDevOpsとかのなんかいい感じのやつ 富士通TechLiveDXとかDevOpsとかのなんかいい感じのやつ 富士通TechLive
DXとかDevOpsとかのなんかいい感じのやつ 富士通TechLiveTokoroten Nakayama
 
こわくない Git
こわくない Gitこわくない Git
こわくない GitKota Saito
 
PPL 2022 招待講演: 静的型つき函数型組版処理システムSATySFiの紹介
PPL 2022 招待講演: 静的型つき函数型組版処理システムSATySFiの紹介PPL 2022 招待講演: 静的型つき函数型組版処理システムSATySFiの紹介
PPL 2022 招待講演: 静的型つき函数型組版処理システムSATySFiの紹介T. Suwa
 
テスト文字列に「うんこ」と入れるな
テスト文字列に「うんこ」と入れるなテスト文字列に「うんこ」と入れるな
テスト文字列に「うんこ」と入れるなKentaro Matsui
 
現場で役立つシステム設計の原則
現場で役立つシステム設計の原則現場で役立つシステム設計の原則
現場で役立つシステム設計の原則増田 亨
 
Railsのデバッグ どうやるかを改めて確認する
Railsのデバッグ どうやるかを改めて確認するRailsのデバッグ どうやるかを改めて確認する
Railsのデバッグ どうやるかを改めて確認する虎の穴 開発室
 

What's hot (20)

モバイル通信を使わない 近接端末間通信対戦のレシピ
モバイル通信を使わない 近接端末間通信対戦のレシピモバイル通信を使わない 近接端末間通信対戦のレシピ
モバイル通信を使わない 近接端末間通信対戦のレシピ
 
暗号技術の実装と数学
暗号技術の実装と数学暗号技術の実装と数学
暗号技術の実装と数学
 
マイクロサービスに至る歴史とこれから - XP祭り2021
マイクロサービスに至る歴史とこれから - XP祭り2021マイクロサービスに至る歴史とこれから - XP祭り2021
マイクロサービスに至る歴史とこれから - XP祭り2021
 
ネットストーカー御用達OSINTツールBlackBirdを触ってみた.pptx
ネットストーカー御用達OSINTツールBlackBirdを触ってみた.pptxネットストーカー御用達OSINTツールBlackBirdを触ってみた.pptx
ネットストーカー御用達OSINTツールBlackBirdを触ってみた.pptx
 
三宅 陽一郎 プロフィール(2017_11_11 作成)
三宅 陽一郎 プロフィール(2017_11_11 作成)三宅 陽一郎 プロフィール(2017_11_11 作成)
三宅 陽一郎 プロフィール(2017_11_11 作成)
 
テスト駆動開発のはじめ方
テスト駆動開発のはじめ方テスト駆動開発のはじめ方
テスト駆動開発のはじめ方
 
「インシデント対応ボードゲーム」の遊び方
「インシデント対応ボードゲーム」の遊び方「インシデント対応ボードゲーム」の遊び方
「インシデント対応ボードゲーム」の遊び方
 
世界最強のソフトウェアアーキテクト
世界最強のソフトウェアアーキテクト世界最強のソフトウェアアーキテクト
世界最強のソフトウェアアーキテクト
 
TDD のこころ
TDD のこころTDD のこころ
TDD のこころ
 
Android向けUnity製ゲーム最適化のためのCI/CDと連携した自動プロファイリングシステム
Android向けUnity製ゲーム最適化のためのCI/CDと連携した自動プロファイリングシステムAndroid向けUnity製ゲーム最適化のためのCI/CDと連携した自動プロファイリングシステム
Android向けUnity製ゲーム最適化のためのCI/CDと連携した自動プロファイリングシステム
 
それはYAGNIか? それとも思考停止か?
それはYAGNIか? それとも思考停止か?それはYAGNIか? それとも思考停止か?
それはYAGNIか? それとも思考停止か?
 
Python におけるドメイン駆動設計(戦術面)の勘どころ
Python におけるドメイン駆動設計(戦術面)の勘どころPython におけるドメイン駆動設計(戦術面)の勘どころ
Python におけるドメイン駆動設計(戦術面)の勘どころ
 
CRC-32
CRC-32CRC-32
CRC-32
 
プログラマが欲しい仕様書とは
プログラマが欲しい仕様書とはプログラマが欲しい仕様書とは
プログラマが欲しい仕様書とは
 
DXとかDevOpsとかのなんかいい感じのやつ 富士通TechLive
DXとかDevOpsとかのなんかいい感じのやつ 富士通TechLiveDXとかDevOpsとかのなんかいい感じのやつ 富士通TechLive
DXとかDevOpsとかのなんかいい感じのやつ 富士通TechLive
 
こわくない Git
こわくない Gitこわくない Git
こわくない Git
 
PPL 2022 招待講演: 静的型つき函数型組版処理システムSATySFiの紹介
PPL 2022 招待講演: 静的型つき函数型組版処理システムSATySFiの紹介PPL 2022 招待講演: 静的型つき函数型組版処理システムSATySFiの紹介
PPL 2022 招待講演: 静的型つき函数型組版処理システムSATySFiの紹介
 
テスト文字列に「うんこ」と入れるな
テスト文字列に「うんこ」と入れるなテスト文字列に「うんこ」と入れるな
テスト文字列に「うんこ」と入れるな
 
現場で役立つシステム設計の原則
現場で役立つシステム設計の原則現場で役立つシステム設計の原則
現場で役立つシステム設計の原則
 
Railsのデバッグ どうやるかを改めて確認する
Railsのデバッグ どうやるかを改めて確認するRailsのデバッグ どうやるかを改めて確認する
Railsのデバッグ どうやるかを改めて確認する
 

命名規則のススメ