プログラミング初心者こそ覚えるべき名前の付け方
プログラミングを始めたばかりの方にまず理解しておいてほしい、「命名規則」についてまとめました。
プログラミングの勉強を始めるとHello Worldから始まり、関数、クラス、オブジェクトと理解を深めていくと思います。
いざ「自分でコードを書いてみよう」となった時に困るのが、名前の付け方です。変数や関数になんと名前をつけていいか分からず、ローマ字で$moziretsu(文字列)なんて黒歴史は誰もが通る道です。
他にも名前が適当で「自分で書いたのに変数に何が入っているか分からない」なんてこともありがちです。
そうした問題を解決するのが「命名規則」です。
このページでは少し解釈を広げて、「誰が見ても理解できるコードを書く」ということを目標に様々なテクニックを紹介します。
目次
ハンガリアン記法もしくはハンガリー記法
考案者チャールズ・シモニーがハンガリー出身であることに由来する。
接頭辞に論理型を付けることで間違えたコードを間違えて見えるようにする記法。
それぞれの接頭辞と意味
文字 | 意味 | 使用例 |
---|---|---|
b または f | 論理型 | bDutyFlag |
by | バイナリ型 | byCount |
n または i | integerなどの整数型 | nPower |
l | long整数 | lDate |
u | 符号なし整数 | uiColor |
dw | double word型 | dwSize |
fp または f | 単精度浮動小数点型 | fpPrice |
db または d | 倍精度浮動小数点型 | dPi |
p または lp | ポインタ型 | lpDirectSound |
s | 文字列型 | sPlayerName |
sz | ゼロ終端文字列型 | szFileName |
fn | 関数ポインタ型 | fnCallback |
hwnd または h | ウィンドウハンドル型(Windowsのみ) | hMainWindow |
g_ | グローバル変数 | g_iErrorCode |
m_ | クラスのメンバ変数 | m_nx |
_ | クラスのメンバ変数 | ny_ |
C | クラス | CHoge |
tag | 構造体 | tagRECT |
(Wikipediaより)
ハンガリアン記法のメリット
論理型であるbFlagと、文字列型であるsNameが bFlag + sName となっていれば誤りであることがわかる。
型の記述が2文字程度で済むので、変数名が短く済む。
ハンガリアン記法のデメリット
暗黙の型変換ができない。変数の型を変更するごとに変数名まで変更しなくてはならず、命名法に添って名前を付けるのが面倒。
(同じユーザーIDでも使い方によってはsUserid、iUseridなど)
キャメル記法
文字のラインが凸凹になる様をラクダのこぶになぞらえてキャメル記法と名付けられた。
大文字小文字を区別する言語と区別しない言語があるので使う場合は全体を統一すること。
先頭の文字を大文字にするか小文字にするかで2つのパターンがある。
アッパーキャメルケースまたはパスカルケース(1単語目から大文字)
悪い例 $userparameter 良い例 $UserParameter
ローワーキャメルケースまたは単にキャメルケース(2単語目から大文字)
悪い例 $userparameter 良い例 $userParameter
キャメル記法のメリット
単語同士の間に余計なスペースや区切り文字がないので文字数が短くて済む。
キャメル記法のデメリット
ぱっと見で単語の区切りが分かりにくい。
スネーク記法
単語と単語の区切りにアンダースコアを使う記法をスネーク記法(スネークケース)と呼ぶ。ちなみにアンダーバーという呼び方は和製英語なので止めよう。
単語の結合は一部COBOL、URLやCSSなどハイフンを推奨する例もあるが、普通ハイフンは演算子なので使用を避ける。
スネーク記法の例
悪い例 $userparameter 悪い例 $user-parameter 良い例 $user_parameter
スネーク記法のメリット
ぱっと見で単語の塊を認識できる。
スネーク記法のデメリット
区切り文字が入るため、単語数が多いと名前が長くなってしまう。page_size_ask_check_qsなど
変数や関数の一般的な名付け方
記法を理解したら次は一般的な名付け方を解説します。
なぜ「一般的」としたかというと、名付け方はコードの作者の好みによって異なるからです。好みについて議論しても一致点は見られないので、一般的に良しとされているルールを踏襲しておきましょう。
2015年2月にGoogleが面白いデータを公表しました。 関数の名前、コメント、スペース入れ方などのクセを探し出し、作者を特定するという試みです。 その結果630行のコードを分析すれば95%の精度で作者を特定できたそうです。 95%もの高い精度で判定できたということは、それだけプログラマーによって異なるルールを持っているという証明です。 「精度95%以上! ソースコードは指紋、作者はほぼ特定できる」より
長い名前は付けない
名前は長くても20文字程度に収まるように設計する。無駄に長い名前は可読性が落ち、入力が面倒で打ち間違いの元になる。言語によっては変数名の長さに制約がある。
悪い例 $user_reset_password_code 良い例 $resetPassCode
しかし現在の言語では制約がないものが多く、IDEの補完機能もあるため無理に短くするルールに縛られる必要はない。
理解できる名前にする
短ければ良いというものでもなく、適切な長さで意味の通じるものにする。また他の要素と混同するような省略の仕方は避ける。
短く済むならわざわざ省略しない
悪い例 $t 良い例 $total
別の意味に取られるような省略はしない
悪い例 $up 良い例 $UserPriority
複数の単語を組み合わせる場合はキャメル記法かスネーク記法を使う
悪い例 $dosaveoptions 良い例 $do_save_options
現代の言語は変数名の長さに制限はなく、古いエディタにあった1行78文字という制限も無いため、イレギュラーで長い名前になる程度は許容しよう。
それでもさすがに「GetApplicationConfigurationString」は長すぎる気がする…。
慣例としてあるものはその例に習う
略語が一般的なもの
悪い例 $average 良い例 $avg 悪い例 $Monday 良い例 $Mon 悪い例 $number 良い例 $no
「~であるか」、「~を有するか」、「~が可能か」といった場合、isを付ける
(当初「真偽値を取るものは先頭にisを付ける」としていましたが、コメントで誤りを指摘していただき修正しました。)
悪い例 $Login 良い例 $isLogin
定数の場合は大文字にする
悪い例 database_path 良い例 DATABASE_PATH
ループカウンターはiから始まる
(何重にもネストしていたり、ループが大量にある場合は名前に意味をもたせたほうが良い場合もあります)
悪い例 $loop 良い例 $i, $j, $k
ループカウンターに使う変数はなぜ「i」か 答えはFORTRANという言語で使われたから。ちなみに由来は整数型を表すintegerから。複数のループカウンターが必要な場合は「i」から始まりアルファベット順に「i」、「j」、「k」…と続く。 視認性の良さからi1、i2等とすることもある。
以上のルールを混ぜない
せっかく良いルールを作っても統一されていなければ意味がありません。
また、どんなに自分のルールが素晴らしいと思っても、既に決められたルールには従いましょう。
悪い例 $user_id、$UserEmail、$user-name 良い例 $user_id、$user_email、$user_name
対義語を理解する
こちらも間違って使用すると何のことやら分からない変数が出来上がるので注意。
Begin ⇔ End Start ⇔ Stop Top ⇔ Bottom High ⇔ Low Big ⇔ Small Create ⇔ Destroy Previous ⇔ Next Allocate ⇔ Free Attach ⇔ Detach Get ⇔ Set Get ⇔ Put Input ⇔ Output Show ⇔ Hide Go ⇔ Back Up ⇔ Down Upper ⇔ Lower
私の命名法より
適切なコメントを付ける
「コードはコンピューターに理解できる言語」
「コメントは人間に理解できる言語」
自ずと求められる役割は異なります。
チームを組んでコーディングする以上、コンピューターと人間の両方に理解できるように書くのがプロの仕事です。
関数を書く場合、何のための関数なのか、バージョンいくつで追加されたのか。変数には何が入るのか。返り値は何か。
以上の点を記載しておくと理解の助けになります。
WordPressのコメントが端的で秀逸なので紹介します。
/* * Retrieve ancestors of a post. * * @global array $wp_post_types List of post types. * * @since 2.5.0 * @param int|WP_Post $post Post ID or post object. * @return array Ancestor IDs or empty array if none are found. */
携わるのが日本人限定なら、もちろん日本語でも良い。
/* * 前のバージョンの投稿を取得する * * @グローバル 配列 $wp_post_types ポストのリスト表示 * @グローバル 配列 $wp_post_types 複数行に及ぶ長々とした冗長な解説も * 後で見ると助かったりする。 * @追加バージョン 2.5.0 * @引数 整数|文字列 ポストIDもしくはポストオブジェクト * @引数 真偽値 複数引数がある場合は追加していく。 * @返り値 配列 配列で前のバージョンのIDを返すか、ポストが見つからない場合は空要素を返す */
本当の上級者は難しい処理を、簡単なコードで実現します。
そうした方々はコードリーディング能力も高いため「下手なコメントは逆に邪魔になる」という意見もあります。
しかしそれができない初心者のうちこそ、丁寧にコメントを付けるように心がけてください。
変数や関数に使われる必要最低限の単語を覚える
プログラミングするにあたって、ネイティブのように英語を使いこなす必要はありません。しかし多少の英語力は求められます。
例えば何か要素を追加する場合、「addとputどちらが適切か。いや、setやappendもあるな…。そもそも新規の追加はcreateだったような…。」と、もやもやすることがあります。
そんな疑問を抱かずに済むように、よく使われる単語は覚えてしまいましょう。
当サイトで無作為にCMSやフレームワークを選び、変数や関数に使われている単語を調べたところ、共通して使われているのは200単語程度でした。これくらいなら簡単に覚えられますね。
へんてこな読み方をして恥ずかしい思いをしないように、読み方や省略形も含めてまとめてみました。
単語 | 読み | 意味 | 使い方 |
---|---|---|---|
absolute | アブソリュート | 絶対の | 絶対パスの指定などに使われる。対比は相対(relative)。absと省略して使わえる。 |
abstraction | アブストラクション | 抽象化 | サブルーチン化、モジュール化など |
accept | アクセプト | 受け入れる、許可する | 何かの申し出に対して許可する、受け入れる。acptと省略して使われる。 |
add | アッド(アドとも) | 追加、登録 | 既にあるものに何かを追加する際に使われる。1つのものに要素を追加する際はappend。 |
addition | アディション | 追加 | 何かの要素に新規に追加する場合に使用する。add(アッド)と省略して使われる。 |
after | アフター | 事後に | 何かの処理の後に実行するものに使われる。aftと省略して使われる。 |
aggregate | アグリゲイト | 集計 | aggrと省略して使われる。 |
align | アライン | 一直線にする | テキストの揃え方を指定する。アリジン、アージンなど誤読多数。 |
allow | アラウ | 許す、許可する | AがBに○○することを許可する、許可を与える。といった指定に使う。 |
append | アペンド | 付加 | 何かの要素を追加する際に使われる(合計は1つ)。addは物の追加に使われる(合計は2つ)。concatenateは物と物を繋げる(2つが1つになる)。 |
apply | アプライ | 適用する | 何かを適用する際に使用する。 |
approve | アプルーブ | 承認する | 公的に承認する際などに使われる。申し出に対して正式に受け入れるといった使い方。appvと省略して使われる。 |
argument | アーギュメント | 引数 | arg(アーグ)またはargsと省略して使われる。複数の引数をまとめて渡す際によく使われる。 |
array | アレイ | 配列 | hogeArray等として使われる。arrとして省略されることもある。 |
attachments | アタッチメント | 添付ファイル | attachと省略して使われる。 |
authentication | オーセンティケイション | 認証 | authと省略して使われる。実はcertificationのほうが一般的だがユーザー認証システムの場合はこちらを使うのが慣例。 |
author | オーサー、実際の発音はアーサー | 著者、作家 | 投稿やコメントを作成した投稿者に使われる。 |
authorize | オーシャライズ | 権限を与える | 公認にするなどの意味。authと省略して使われる。 |
back | バック | 後部 | 何かの後ろの場所を示す。対義語はfront。 |
before | ビフォー | 前に | 何かの処理の前に実行するものに使われる。bfrと省略して使われる。 |
boolean | ブーリアン | 真理値(trueもしくはfalse) | bool(ブール)またはbと省略して使われる。真偽値を取る変数や関数は先頭にisを付ける方法も一般的。isLogin、isPostsなど。 |
boot | ブート | 起動 | 靴ではない。 |
build | ビルド | 作る、組み立てる | URLなどをを組み立てる関数に使われる。 |
bundle | バンドル | 束ねる | 何かをまとめる際に使われる。bdlと省略して使われる。 |
button | ボタン | ボタン | btnと省略して使われる。 |
capability | ケーパビリティ | 能力 | 特定の機能を付加する際に使われる。 |
captcha | キャプチャ | キャプチャ | 文字を画像にして入力してもらうことでスパム対策にする。 |
category | カテゴリ | 区分、種類 | catと省略して使われる。複数の場合はcategories。 |
cd | シーディー | change directoryの略。 | |
certification | サーティフィケーション | 認証 | certと省略して使われる。認証局の認証などはこちらを使う。ユーザー認証はauthenticationを使う。 |
character | キャラクター | 文字列を表す型 | char(チャー)もしくはch(シーエイチ)と省略して使われる。 |
children | チルドレン | 子要素 | オブジェクトの子要素を扱う際に使われる。childrenはchildの複数形。foreach($children as $key => $child)など |
clause | クローズ | 節 | SQLに渡す節を指定する際に使われる。複数の場合はclauses(クローズイズ)。 |
collapse | コラップスもしくはコラプス | 破線 | いわゆる点線 |
column | カラム | 囲み記事、カラム、列 | フィールド等と同じように使われる。 |
compile | コンパイル | 編集する | 何かを設計図通りに変換する際に使う。 |
compute | コンピュート | 計算する | 正規表現で計算する関数などに使われる。cmptと省略して使われる。 |
condition | コンディション | 条件 | 特定の値がtureか調べるときなどに使われる。 |
config | コンフィグ | 設定 | confと省略して使われる。 |
confirm | コンフォーム | 確認 | 入力内容の確認の際に使われる。 |
construct | コンストラクト | 構築する | 初期設定など、class内で初期設定する際に使われる。専用の指定方法があるため変数や関数名としてはあまり用いない。 |
consumer | コンシューマー | 使い手、利用者 | 実行しているログインユーザーを特定する場合などに使われる。 |
container | コンテナ | 容器、コンテナ | データを格納する構造に使われる。オブジェクトの扱いを標準化するための入れ物。cntnrと省略して使われる。 |
context | コンテキスト | 文脈 | プログラムでは複数の型の変数で異なる返り値を設定している場合に判断する際に使う。 |
control | コントロール | 操作 | 何かを操作する関数等に使われる。Ctrlと省略して使われる。 |
count | カウント | 項目の個数 | cntもしくはcontと省略して使われる。 |
create | クリエイト | 作る | 全く新しい要素自体を作るときに使う。既にあるものに要素を追加する場合はadd。 |
credential | クリデンシャル | 信任状、資格証明書 | |
date | デイト | 日付 | 年月日。$post_dateなど |
day | デイ | 日 | 普通dだけの場合はdayの省略形。複数はdays。 |
dead | デット | 死 | サーバやデータベースが死んでいないか確かめる際に利用する。 |
decimal | デシマル | 10進数 | 10進数に丸めるさいに使う。decと省略して使われる。 |
default | デフォルト | 初期値 | 初期値を設定する際に使われる。 |
delete | デリート | 削除 | ゴミ箱に入れる場合はtrash。deleと省略して使われる。 |
dispatcher | ディスパッチャ | 通信指令系 | 複数の処理を並行して行うために振り分ける役割をする。dispと省略して使われる。 |
distinguish | デスティングイッシュ | 区別する | distもしくはdistingと省略して使われる。 |
draft | ドラフト | 草案,草稿 | 下書きに使われる。dftと省略して使われる。 |
dump | ダンプ | 捨てる | 何かを捨てる処理をする際に使われる。 |
ellipsis | エリプシス | 省略記号 | …やら…など。 |
empty | エンプティ | 空の | 空データのチェックなどに使われる。 |
enable | イネーブル | 有効にする | 可能にするという意味もあることから、許可を与えるといった用途にも使われる。enblと省略して使われる。 |
enclose | エンクローズ | 囲む | 括弧やクォーテーションなどで囲む際に使う。enclと省略して使われる。 |
entity | エンティティ | 実体 | プログラムではエンティティ処理(文字参照、実体参照)に使われる。 |
env | エンブ | UNIX系で使われる環境変数。 | そのまま環境変数の取得する変数等に使う。 |
exact | エグザクト | 正確な | 厳密な値を求める場合などに使われる。 |
exception | エクセプション | 例外 | 例外処理に使う。 |
excerpt | エクサープト | 抜粋 | 大量の文章を抜粋表示する際に使われる。post_excerptなど |
extend | エクステンド | 伸展する、伸長する、拡張する | extension(エクステンション)とも。ファイルの拡張子等や機能拡張の意味で使う。ext(エクスト)、と省略して使われる。 |
extract | エクストラクト | 抜き取る、抽出する | 何かの要素を抽出する際に使われる。コンテンツからURLを抜き出すなど。 |
field | フィールド | オブジェクトの持つ固有データ | プロパティ、メンバ変数とも呼ばる。fldと省略して使われる。 |
fill | フィル | 充填する、詰める | 変数に値を全てセットするような際に使う。 |
filter | フィルター | 選別する | 何かのデータから抽出する場合に使われる。抽出後のものはfilteredとされる。fltrと省略して使われる。 |
flag | フラグ | 旗 | 条件判定時に満たすべき条件。flgと省略して使われる。 |
force | フォース | 強く | 何かを強制的に実行する場合に使われる。force-quitなど。fと省略して使われる。 |
front | フロント | 前部 | 何かの前の場所を示す。時間的に前の場合はBefore。対義語はback。プログラムではrearはあまり使われない。frと省略して使われる。 |
function | ファンクション | 機能 | 特定の機能について使う。funcもしくはfctnと省略して使われる。 |
gmt | ジーエムティー | GMT timezone | |
gradient | グラディエントもしくはグラジエント | 傾斜、勾配、グラデーション | CSSでグラデーションの指定に使う。gradと省略して使われる。 |
handle | ハンドル | ハンドル | ファイルを識別する情報に使われる。hdlと省略して使われる。 |
height | ハイト | 高さ | hgtと省略して使われる。 |
hidden | ヒドゥン | 非表示 | hide(ハイド)と省略して使われる。表示はshow。 |
hierarchical | ヒエラリカル | 階層的な | 階層構造を持つ要素のフラグ等に使う。 |
hierarchy | ヒエラルキー | 階層 | 階層構造を持っているか調べるさいに使う。ちなみにネイティブの発音はハイラァーキーと聞こえる。 |
history | ヒストリー | 歴史 | 更新履歴などに使われる。 |
hook | フック | 留め金 | 何かの処理を加えたり変更する際に使う。 |
horizontal | ホリゾンタル | 水平 | CSS等で使われる。horizと省略して使われる。 |
how | ハウ | どのように | |
ignore | イグノア | 取り消す | 処理を取り消す際に使われる。 |
implements | インプルメンツ | 用具 | 関数や変数を定義する際に使われる。 |
index | インデックス | 添字や項目番号 | Idxと省略して使われる。 |
infinity | インフィニティ | 無限大 | inf(インフ)と省略して使われる。 |
info | インフォ | 情報 | 何かの情報に使われる。組み合わせて使われることが多い。error_info、user_infoなど |
instance | インスタンス | クラスによって生み出されたオブジェクト | 説明が難しいが、これ以上噛み砕いた表現もできない厄介な言葉。get_instanceなど |
integer | インテジャー | 整数を表す型 | int(イント)と省略して使われる。 |
invalid | インバリード | 無効な | 無効な値を入力した際の変数に使われる。invalidationで無効にする。 |
iterator | イテレータ | 反復子 | 要素に順番にアクセスするための機能。ループ等で順番に要素を取り出せるようにしてある仕組み。 |
key | キー | 鍵、インデックスキー | 通常インデックスキーの意味で使われる。if(hoge = $key)やforeach($hogelist as $key => $value)など |
length | レングス | 長さ | lenと省略して使われる。 |
locator | ロケーター | 目的のものが存在する位置や場所 | パスや○個目の配列を参照といった時に使う。 |
lower | ロウワー | lower case(小文字) | 小文字にするときに使う。lwrと省略して使われる。 |
maximum | マキシマム | 最大 | 最も大きい値などに使われる。max(マックス)と省略して使われる。 |
message | メッセージ | 通信 | msgと省略して使われる。 |
meta | メタ | 付加情報 | 分かりにくい単語の中でもトップクラス。何かの付加情報と覚える。post_meta、user_metaなど。 |
method | メソッド | 方法、法式 | 何かと組み合わせて仕組みを作る際に使う。addMethod、setMethodなど。mthdと省略して使われる。 |
minimum | ミニマム | 最小 | 最も小さい値などに使われる。min(ミン)と省略して使われる。 |
minute | ミニット | 分 | 普通mだけの時はminuteの省略形。もしくはmin。複数形はminutes。 |
mkdir | エムケーディア | make directoryの略。 | |
moderate | モデレート | 節度ある、中くらいの、内輪 | 転じて投稿やコメントの表示を承認する際に使う。本来は内輪での発言を管理するための言葉で、承認ならapproveやacceptのほうが近い。mdtと省略して使われる。 |
modified | モディファイド | 修正する、変更する | 修正日時などに使われる。post_modifiedなど |
modify | モディファイ | 修正する、改造する | 最終更新日などに使われる。last_modifyなど。modと省略して使われる。 |
month | マンス | 月 | 普通mだけの場合はmonthの省略形。もしくはmo。複数形はmonths。 |
n/a | エヌエー | 該当なし(not applicable)もしくは利用できない(not available) | R言語ではNA(not available、欠損値)として扱われる。 |
nan | ナン | Not a Numberの省略形 | 日本語では非数と言われる。不正な処理をした場合に出力される値。 |
navigation | ナビゲーション | 航海、航行 | ITではページ移動キーなどのインターフェイスを指す。navと省略して使われる。 |
next | ネクスト | 次 | 次のページなどに使わる。反義語の前はPrevious。 |
normalize | ノーマライズ | 標準化、正常化 | 特定のデータを正規化する際などに使われる。normと省略して使われる。 |
notice | ノーティス | 通知、予告、予約 | 解除通知やアラートメールなどに使われる。 |
notify | ノティファイ | 通知する | お知らせなどの行為そのものを指す。お知らせ(notice)をする関数等に使われる。ntfyと省略して使われる。 |
null | ヌル | 「何もない」といった意味の型。 | 何も要素が無いという意味で使われる。 |
number | ナンバー | 数字を表す型 | num(ナム)もしくはnoと省略して使われる。添字(index)なのか、カウント(count)なのかわからないことがあるため注意。 |
object | オブジェクト | オブジェクト | objとして省略されることもある。 |
offset | オフセット | 差 | 転じてあるデータの基準点からの差を表した値。検索結果の5つ目から表示といった場合に使われる。ofsと省略して使われる。 |
opacity | オパシティ | 不透明度 | CSS等で使われる。 |
option | オプション | 選択 | 選ぶか選ばないか選択できるものに使う。個人的にoと省略するのはやめてほしいw |
output | アウトプット | 出力 | 反義語はaddではなくinput。outと省略して使われる。 |
override | オーバーライド | 上書き、再定義、無視する | 上書きや再定義する際に利用する。要素を新規追加する場合はaddition。ovrdと省略して使われる。 |
parent | ペアレント | 親 | 親要素の指定に使われる。 |
parse | パース | 構文解析 | 前処理で変数やプロパティを使用する形に変換する際に使われる。rss_parse_argsなど |
pattern | パターン | 模様、パターン | 複数の処理をする場合に条件分岐のフラグに使う。pattと省略して使われる。 |
percentage | パーセンテージ | 割合 | 省略してpercとすることもある。 |
permit | パーミット | 許可する、許可証 | ルールに添って公的に許可する。○○するのに問題がないといった使い方をする。 |
popular | ポピュラー | 人気のある | 人気のある投稿の表示などに使う。 |
position | ポジション | 位置 | posと省略して使われる。posnと省略して使われる。 |
pragma | プラグマ | プログラムの断片 | 接頭辞やフラグなどを付加するのに使われる。 |
prefix | プレフィックス | 接頭辞 | prefと省略して使われる。 |
prepare | プレペア | 準備 | 何かの処理の準備段階の関数名などに使われる。prepと省略して使われる。 |
preview | プレビュー | 試写、下見 | これは普通にプレビュー。 |
private | プライベート | 非公開 | ページを非公開にするかの判断に使われる。pvtと省略して使われる。 |
protocol | プロトコル | 通信規約 | |
publish | パブリッシュ | 公開 | ページを公開にするかの判断等に使われる。公開済みの場合はpublished。 |
put | プット | 置く、追加する | 位置を移動して置く場合にはput。右のものを左に代入するといった場合にはput。追加の場合はadd。 |
quality | クオリティ | 品質 | jpegの圧縮率などの指定等に使われる。qualと省略して使われる。 |
query | クエリ | 質問、疑問、疑問符 | DBへの問い合わせに使われる。接頭辞でqとして使われる。応答にはresultを使う。 |
queue | キュー | 順番を待つ人や乗り物の)列 | 転じて古く登録されたものから順番に処理するものや、順番待ちしているものに使われる。 |
radius | レイディアスもしくはラディウス | 半径 | 角丸の半径などに使われる。radと省略して使われる。 |
rate | レート | 割合 | 割合を出すときに使われる。rtと省略して使われる。 |
reference | リファレンス | 引用、基準 | tokenの指定や、一意性の識別等に使う値に使う。refと省略して使われる。 |
regex | レジェックス | 正規表現 | 特定の正規表現で検索や置換等を行う関数に使われる。 |
register | レジスター | 登録 | 登録関連の処理に使われる。rgtrと省略して使われる。 |
relative | リレーティブ | 相対の | 相対パスの指定などに使われる。対比は絶対(absolute)。relと省略して使われる。 |
reminder | リマインダー | 備忘録、念押し | 利用者に重要な事を思い出させる通知サービス。 |
request | リクエスト | 要請する、頼む | データベースから値を取り出したり、関数に処理を依頼する場合に使う。reqと省略して使われる(ただしrequireもreqなので注意)。 |
require | リクアイア | 必要とする | 必須の項目に使う。必須条件はrequirements。reqと省略して使われる(ただしrequestもreqなので注意)。 |
reservation | リザベーション | 予約 | 場所を予約する場合に使われる。予約投稿などに使われる。名詞。 |
reserve | リザーブ | 予約する、保留する | ものや場所を予約する場合に使われる。動詞。rsvと省略して使われる。 |
response | レスポンス | 応答 | pingや返り値に使われる。resと省略して使われる。 |
restore | リストア | 再生、復活 | 元の状態に戻したり、1度ゴミ箱に入れたデータを復旧する際に使われる。rstと省略して使われる。 |
result | レゾルト | 結果 | 関数やデータベースから取得した値に使われる。 |
return | リターン | 返り値 | 関数の返り値等に使われる。rtnと省略して使われる。 |
sanitize | サニタイズ | 取り除く | あるデータから必要のないデータを取り除く際に使う。filterを使ってsanitizeする。 |
sanity | サニティ | 正気、健全 | 正常かどうかをチェックする際に利用する。 |
schedule | スケジュール | 予定、時間割 | 予め決められた機関に処理をする際に使われる。schedと省略して使われる。 |
scheme | スキーム | 計画、企画 | 意識高い系クリエイターが大好きな言葉。 |
second | セコンド | 秒 | 普通sだけの場合はsecondの省略形。もしくはsec。複数形はseconds。 |
sender | センダー | 差出人 | メールの送信者に使われる。sdrと省略して使われる。 |
sentence | センテンス | 文 | 転じて文章を構成する要素などに使われる。 |
separator | セパレーター | 分離器、隔離板 | 何かの要素を区切るものについて使われる。カンマや句読点を追加したりなど。sepと省略して使われる。 |
serialize | シリアライズ | 直列化 | オブジェクト指向でバイト列やXMLフォーマットに変換すること。反義語はunserialize。もしくはdeserialize。 |
set | セット | 置く、設置 | 決められたものを所定の位置に置く。その値が入ることが決まっていた変数に、所定の値を代入する場合に使う。 |
shown | ショウン | 表示 | show(ショウ)と省略して使われる。非表示はhidden。 |
sign | サイン | 記号、合図、符号 | 署名という意味でも使われる。sign key fileなど。 |
slug | スラッグ | スラッグ | ワープロで印刷時にページの位置を示すために入るコード。転じてURL等を指定する際に使われる。slgと省略して使われる。 |
stack | スタック | 積む | 最後に入力したデータから出力されるというデータ構造。上から追加したものから取り出すので、積んだ書類から転じて使われる。逆に古いものから出力されるのはキュー(queue)。stkと省略して使われる。 |
static | スタティック | 静的 | 値が変化しない静的な変数に使われる。スタティック変数、スタティックリンクなどに使われる。反義語はdynamic(ダイナミック)。 |
stick | スティック | 添え木 | 転じて投稿の一番上に固定で表示されるものなどに使う。stick_postなど |
string | ストリング | 文字列を表す型 | str(エスティーアール)と省略して使われる。省略したほうが読み方が長くなってるのは内緒。 |
strip | ストリップ | 剥ぎ取る | 文字列や数列の一部を削除するような処理に使われる。stpと省略して使われる。 |
subject | サブジェクト | 問題、主題、件名 | メールの件名等に使われる。subjと省略して使われる。 |
summary | サマリー | 概要、要約 | 各情報から必要な情報のみを抜き出す際に使われる。smyと省略して使われる。 |
suspend | サスペンド | 保留、停止する | 一時停止する際に使用する。suspと省略して使われる。 |
temporary | テンポラリー | 一定時間経つと元に戻る | 一時ファイルを扱う際に使われる。tempと省略して使われる。 |
term | ターム | 期間、期限、条件、規約 | 普通は分類の項目という意味で使われる。タグ(分類)に動物(項目)とあったら、動物がターム。hoge($termId, 1)、post_termsなど。 |
terminate | ターミネート | 終了する | 終了処理の際に使われる。 |
thumbnail | サムネイル | 簡潔な | 単純に画像のサムネイルに使われる。thumbやthumと省略される。 |
timezone | タイムゾーン | 基準時間 | |
transition | トランジション | 推移する | CSSのアニメーションに使われる。他にも何かの状態が推移した時に実行される関数等に使われる。trnsnと省略して使われる。 |
trash | トラッシュ | 捨てる | ゴミ箱に入れるフラグをつけるのに使う。削除をする場合はdelete。 |
unique | ユニーク | 一意 | IDなど一意性を保つものに使う。 |
update | アップデート | 更新 | 最新のものにする。 |
upper | アッパー | upper case(大文字) | 大文字にするときに使う。uprと省略して使われる。 |
validate | バリデート | 確証する、確認する | 入力値のチェックをする際に使われる。 |
value | バリュー | 値 | 何の値かを併記する場合が多い。user_valueなど。valと省略して使われる。 |
variable | バリアブル | 変数 | 宣言時だけでなく、解説等でよく使われる。var(バー)と省略して使われる。適当な変数名を付けるのが面倒な時に便利。 |
void | ボイド | 「無効な」といった意味の型。 | データ型が不明・不正、または無効といった意味で使われる。vdと省略して使われる。 |
vote | ボート | 投票 | 投票システムに使われる。 |
week | ウィーク | 週 | 普通wだけの時はweekの省略形。もしくはwk。複数形はweeks。 |
weight | ウェイト | 重さ | 体重ではなく、記事の重み付け、プライオリティなどに使われる。wtと省略して使われる。 |
what | ホワット | 何を | 何かの処理をする対象を指定する際に使う。 |
when | ホエン | いつ | 処理の日時を指定するのに使う。 |
where | ホエア | どこで | 位置情報やページ情報などを指定するのに使う。 |
who | フー | 誰が | 対象となるユーザーの指定に使う。 |
why | ホワイ | なぜ | 使うとしたらフラグ分けの時くらい? |
widget | ウィジェット | 部品 | サイトにちょっとした機能を追加する仕組み。 |
width | ウィドス | 幅 | ウィズ、ワイズとも読む。wdと省略して使われる。 |
window | ウィンドウ | そのまま窓 | winだと勘違いが多いので、wndもしくはwdoと省略して使われる。 |
wrapper | ラッパー | プロトコル情報http、httpsなど | あるプログラムの動作を決定するためのプログラム。内包するプログラムという意味でも使う。wrap(ラップ)と省略して使われる。 |
year | イヤー | 年 | 普通yだけの場合はyearの省略形。もしくはyr。複数形はyears。 |
これだけ覚えれば、大抵の名前は付けられるようになります。
もしわからない単語が出てきたら適宜調べて、専用のチートシートに追加しておくと理解が早まります。
調べる際は以下の様な便利なサイトを利用しましょう。
発音もわかる英和辞典:Weblio
文章の翻訳をしてくれる:グーグル翻訳
命名に使われる単語と意味を調べられる:codic
以上、変数や関数の命名規則に関してまとめてみました。
全て読んでくれた方に、最後に最大のアドバイスがあります。
それは「以上のルールに縛られるな」という点です。
移り変わりの早いIT業界では、現在素晴らしいと言われれているルールも、5年後は見る影もないということが日常茶飯事です。大切なのはより良い方法を見つけた時に、それを取り入れる柔軟な姿勢です。
>ループカウンターに使う変数はなぜ「i」か
>
>答えはFORTRANという言語で使われたから。ちなみに由来は整数型を表すintegerから。
iteration(繰り返す)のiでは?
なるほど、繰り返すという説もあるんですね。
少し調べなおしてみましたが、どうやら数学の式の習慣に則って整数にI,J,Kが使われていたことと、Index,Iterator,Integerといった変数に使うにはIから使うのが都合が良いからというのがあり、FORTRANの作者であるBakusが『Iから始まる6文字に決まったのは、みんな添え字にI、J、Kをつかっていたので、(L、M、Nを)気前よく増やした。』と発言しています。それが整数型を表す変数として定義されたことから定着したそうです。
出典:http://qiita.com/yaju/items/38f63900491d4ac51af7
学校では InTeger として、整数型の変数が I から T まで確保されていて、最初の変数が I と習いました。
今は皆が使ってる慣習も、さかのぼってみると以外に諸説あることが多いようです。
何を信じるかは、我々の捉え方次第かもしれませんね。
接頭辞に変数型を付けるのは本来のハンガリアン記法ではないですね。古い文章ですが
http://local.joelonsoftware.com/mediawiki/index.php/%E9%96%93%E9%81%95%E3%81%A3%E3%81%9F%E3%82%B3%E3%83%BC%E3%83%89%E3%81%AF%E9%96%93%E9%81%95%E3%81%A3%E3%81%A6%E8%A6%8B%E3%81%88%E3%82%8B%E3%82%88%E3%81%86%E3%81%AB%E3%81%99%E3%82%8B
の後半でそのあたりの話があります
なるほど、勉強になります。
変数の役割などを識別するのにも使われるんですね。
lower、upperは、小さくする、大きくするから転じてじゃなくて、lower case、upper caseの略だと思うんですが。
ご指摘ありがとうございます。
早速修正させていただきました。
かなり過去のページですが、見つけたし、他の方も見つけるだろうから参考程度にコメントします。
紹介されているのはシステムハンガリアン記法ですね。
そのやり方が流行ったため、VB6だと逆にこれに則らないと毛嫌いされる傾向にあると思います。
個人の好き嫌いもありますが、「真偽値を取るものは先頭にisを付ける」は誤解を招くと思います。
「~であるか」、「~を有するか」、「~が可能か」などの求めるものによって、意味合いが異なるので。
PHPでは「is_numeric」、「is_array」などという関数があって、他の言語でも似たようなものがあります。
このことから、「数値かどうか」、「配列かどうか」という意味合いになります。
なので、例にある「isLogin」は「ログインか」という、意味がわからない状態になってしまいます。
以下は、命名規則の参考になるものです。
http://qiita.com/KeithYokoma/items/2193cf79ba76563e3db6
http://objectclub.jp/community/codingstandard/CodingStd.pdf
2つめはJava用ですが、命名規則については参考になると思います。
ご指摘ありがとうございます。
まさしくおっしゃる通り、真偽値という言葉の定義を勘違いしていました。
修正させていただきました。
参考のリンクもありがとうございます。勉強させていただきます。
capabilitieはcapabilityだと思います
ご指摘ありがとうございます。修正しました。
プログラミング知識の深い方からは、
いろんなご指摘も受けるでしょうが、
総じて、非常にためになるサイトだと思います。
お褒めの言葉ありがとうございます。
childrenはchildの複数形ですので、childは省略ではありませんよ。
ご指摘ありがとうございます。修正しました。
nullは本来の英語の発音に近い言い方で「ナル」っていう人もたまにいますね。
まあ、入門書とかにも本当は「ナル」って言うんだよって書いてあってみんな知ってるけど
その上で「ヌル」って呼ぶのが主流になってる気がしますが。
和製英語の難しいところですね。リナックスとリヌックスも悩ましいところです。
一応このページの情報は初心者の日本人向けなので、ヌルで覚えたほうが実用的だと思います。
細かいですが、append の 使い方に掲載されている `oncatenate` は先頭の `c` が欠けているかと思います。
ご指摘ありがとうございます。修正しました。
abstractionの読みが『アブストラクション』ではなく、『アブスラクション』となっています。
あと、addの読みでは『アド』なのに、appendの説明文には、『add(アッド)と省略して使われる』とあります。
同じ単語の読みなんだし、統一しましょうよ。
細かい指摘だと思いますが、プログラミング入門者や今さら聞けないで勉強している人向けの記事なんだし、
この記事の目的上、誤字・脱字・読み違いはしてはいけない部分ですよ。
あと、additionの読みは『アディーション』でなく、個人的に『アディション』ですけどね。
面倒な記事の割にツッコミも多くて苦労が報われないと思いますが、とても良いまとめ記事だと思います。グッジョブです。^_^b
細かな点までご指摘いただき、ありがとうございます。
校正が行き届いておらず、失礼しました。
修正させていただきました。
serializeの逆はdeserializeじゃないんでしょうか?
javaではその対応をよく見ます。
両方使うようですね。
追記させていただきます。
最近のエディタは優秀なので困ることは少ないのかも知れませんが、、、、
> ループカウンターはiから始まる
> 悪い例 $loop
> 良い例 $i, $j, $k
使用箇所が数ステップであれば良いのですが、「1文字の変数名」は
数十ステップで使用されると非常に追いにくい(読みにくい)ので推奨いたしかねます。
ご指摘の点、注意書きを加えました。
アンダースコアは、publicやprivateの区別で使用されるみたいな事を聞いたのですが、どうなのでしょうか??
リンク( https://teratail.com/questions/41277 )
私はプログラミング学習初心者ですので詳しくありません。疑問に思い質問させていただきます。
アンダースコアをどのように解釈するかは命名規則だけでなく、おっしゃるとおり言語特有の扱い方もあります。
使う言語に合わせて使ってください。
細かい部分の指摘等はあると思いますが、全体的に
とても分かりやすくまとめられていると思います。
コーディング命名規則のサイトいくつか見ましたが、
初心者には特に為になると感じました。
width ウィドス 幅 ウィズ、ワイズとも読む。wdと省略して使われる。
とありますが、「ワイズ」とは読みません。少なくとも、google君は(つまり英語の発音は)。
「ワイズ」と読む人がいますが、「間違っている」ことを明記すべきだと思います。
この発音は、恥ずかしいと思います。
ご指摘ありがとうございます。
以後気をつけます。