【Web&プログラム】命名規則のNGと考え方について
【Web&プログラム】命名規則のNGと考え方について
CSSのclass名やid名、プログラムの変数名や関数名などの命名規則に悩まれていませんか?
プログラムやCSSを書くのが初心者の方は命名規則のNGって知っていますか?
命名規則とは
簡単に言うと、コーディングなどを行う際にclass名やid名、変数名などにつける文字列を取り決めたルールみたいなものです。
この命名規則をきちんと守ることで、ソースコードの可読性やメンテナンス性を保持することが出来ます。
プログラムに関しては設計書の中に書かれていることがありますが、自分で組んだりする場合は一応決めておいた方が良いでしょう。
NGはあるの?
あります。
命名規則の根本的なものとして
- ・予約語や定数は使えません(予約語の説明はこのあとで記述します)
- ・最初に数字や記号(一部を除く)が来ることは許されません
というものがあります。
予約語や定数
予約語とは、メソッドや関数、演算子などで使われているものです。
例えば、JavaScriptであれば
- ・for
- ・if
- ・and
- ・this
などです。だいぶ省きましたが、こういうものです。
詳しくはこちらのMDNのサイトなどを参考にしてみてください。
定数は
- ・TRUE
- ・FALSE
- ・null
など。
すでに仕様として準備してある名前なので、これと同じ名前は使えない。
と覚えたらよいかと思います。
最初に数字が来るのはNG
例えば、こういうもの
- 01main ←数字が最初なのでNG
数字は基本ほとんどにおいてNGですが、記号の場合は書くものによって違います。
例えば、
- CSSはハイフン(-)アンダースコア(_)は使用可能
- *ただし、ハイフンから続く数字はNG,またハイフン二つから始めるのもNG
- JavaScriptはアンダースコア(_)やドルマーク($)が使用可能
こういった事も配慮しておかなければなりません。
基本的にはハイフンやアンダースコアは区切りとして利用するのがオススメです。
では理想的な命名規則は?
何を表しているのかを考えてみるといいかも知れません。
なぜかと言うと自分自身が書くだけ、読むだけならいいかもしれませんが、チームでする場合や他の人も見ることがほとんどですし、制作後に他の人に渡る事も十分にありえます。
であれば、可読性やメンテナンス性を考えて命名するのが理想かと思います。
- ・aとかbとかxとかyとか1文字で表すのは避けましょう
- ・日本語を安易にローマ字表記にするのは避けましょう
例)hennsuu ←これ教科書とかにも意外に多いのですが正直、何の変数!?ってなります。
日本語をローマ字表記にするのであれば、Google翻訳を利用してその日本語を英語に変えるなどを検討して見てください(個人的によく使います)
命名規則に悩んだら
これはあくまでも私の考え方なのですが、途中で記述したように何に使用するのか、何を表しているのかなどをまず考えます。
そして、それを英語に変換します。
CSSであれば単語をハイフンやアンダースコアで繋ぎます。
例)class=”main–image”
プログラムの場合であれば、繋ぎを無くし、二つ目の英単語から大文字にします。(例はJavaScriptの場合)
例)var mainImage
プログラムで定数の場合は全て大文字(例はJavaScriptの場合)
例)const MAINIMAGE
などこのようにして考えています。
(参考になれば・・・)
ただ、注意すべき点として堅くならないようにしています。
堅くならないとはどういうことかというと、何を表しているのかに固執し過ぎるということです。
まとめ
命名規則に正解はないのかもしれませんが、避けた方が良いことは多いですし、NGもあります。
私自身もあとで自分のソースコードを見て、なんだこの名前は!ってなることもしばしばあります。。
ですので誰が扱うかわからないということを考えて、誰が見てもわかるような名前で考えてみるのが良いかも知れませんね。