Skip to content

Latest commit

 

History

History
89 lines (49 loc) · 7.57 KB

chap-basic-naming.md

File metadata and controls

89 lines (49 loc) · 7.57 KB

名前の付け方

プログラミングの世界では、名前の付け方に少し独特だけど一般的に知られているルールがあります。

  • スネークケース
  • ケバブケース
  • パスカルケース
  • キャメルケース

これらはアルファベットを空白文字で区切らないときにどう表記するかというルールです。

前提としてコンピュータの世界ではアルファベットや数字と一部の記号以外は使わない方がいい局面が多く存在します。

  • ファイル名
  • プログラムの中の名前(変数名など)
  • 何かしらのID

スネークケース snake case は、snake_case のように、アンダースコア _ で区切るというルールです。

ケバブケース cabab case は、cabab-case のように、ハイフン - で区切るというルールです。一部ではハイフンケースなどとも呼ばれています。

パスカルケース pascal casePascalCase のように、個々の単語の先頭を大文字にして、それ以外を小文字にするというルールです。

キャメルケース camel casecamelCase のように、先頭の単語だけ全部小文字にして、続く単語の先頭だけ大文字にするというルールでパスカルケースの亜種です。

プログラムコードの中でケバブケースを見ることは希です。ハイフン - はマイナス記号として使われることがほとんどなため、cabab-caseは、cabab - caseという引き算として解釈されてしまうからです。どちらかというと、ファイル名やパッケージ名に多く見られる形式1です。

どの形式を使うかは、大体プログラミング言語やフレームワークで決まります。ここではこういう形式があるということだけ覚えておきましょう。

[column] アルファベットと一部記号以外を使う危険性

ファイル名には日本語などを付けることもできますし、WordやExcelのファイル名程度なら日本語ファイル名でもさほど問題はありませんが、 WindowsやMac, LinuxだけでなくスマートフォンやWebを考えると、アルファベットなどの安全な文字以外を使うと何かしらのトラブルの原因になります。

環境が統一されている場合はうまくいくことが多いため、Windowsだけの職場や、Macがメインの職場では使われることもありますが、WindowsとMacでファイルをやりとりすると、それぞれのOS・ファイルシステムでの名前の取り扱いルールにより、同じファイルを別の文字列で指し示す可能性があります。

悪名高きUnicode正規化ルールと呼ばれるもので、たとえば、「が」を「が」そのものと表現すべきか?「か」と「゛」の合わせたものと表現すべきか?

これらはバージョンやセットアップによって違いがあるため、余計なトラブルを避けるためには、日本語を使わないというのが望ましいです。

[/column]

case insensitive / case sensitive

case insensitive(大文字小文字を区別しない)とcase sensitive(大文字小文字を区別する)というそれぞれの環境があります。

前述のとおり文字は突き詰めれば数字ですが、一部の文化では大文字小文字を区別したくないという考え方があり、特定のプログラミング言語の識別子や、特定のOSのファイル名などは、まさにその大文字小文字を区別しないというルールになっています。

大文字小文字を区別しない環境では、camelcaseCamelCasecamelCaseも、どれも同じ文字であるという判定をされてしまいます。

これは気をつけないと重大な障害に結びつきやすい為、プログラミングをするときには意識しておいた方がよいでしょう。

よく事故るのは、MySQLの文字列比較です。MySQLは標準では大文字小文字を区別しないため、そのままでは不都合が生じます。

大文字小文字を区別しないほうが便利なのでは?と思う人もいるかもしれませんが、厳密に区別しないと困る事例も多く存在します。

たとえば自動生成IDなんかが該当します。HoGe1234HOGE1234を別々に生成していたとしても、MySQLの標準での文字列比較では同じものとして判定をしてしまいます。

ファイル名なんかも同じような問題を持ちます。Windows及びmacOSでは標準的にファイル名は大文字小文字を区別しないため、File.cfile.c を同じファイルとして判定してしまいます。

これも、様々な事故を誘発する要因であるため、ファイル名ではなるべく小文字のみを使う方が無難です。

プログラミングでは、変数名や関数名を識別子と呼び、一部の例外的な言語を除き、識別子は大文字・小文字を区別します。また、大文字・小文字の使い方(パスカルケース・キャメルケース)などで、変数・定数・クラス・関数などを判別するようになっているため、大文字と小文字には敏感になっておくべきでしょう。

[column] 全角と半角

いわゆる全角文字とよばれるものがあります。0はそれぞれゼロを指す文字ですが、前者が半角で後者が全角です。見た目ではほとんど区別が付きませんが、全角英数字はプログラムの中では半角英数字と別物として扱われます。

const hoge = 
// Uncaught SyntaxError: Invalid or unexpected token

全角数字のゼロはプログラム上では数字とみなされずに、エラーが出ます。

文章を書く人たちは歴史的経緯により全角文字を好む傾向がありますが、プログラマは全角英数字を蛇蝎のごとく嫌います。

ちなみにソースコードを日常的に書いてるかどうかの判別方法として、全角英数字を使う人かどうか?というものがあります。日常的にコードを書いてる人の大半は全角英数字を見るのも嫌なので、滅多に使いません。

もちろんこれは完全な判別方法ではないため、真に受けない方がいいですが、全角英数字には気をつけたいものです。

ちなみにプログラマを殺す一番簡単な方法は、全角のスペースをこそっと、ソースコードに紛れ込ませることでしょうか。目に見えないエラー原因なので、まさにサイレントキラーといえる存在です。プログラマ向けフォントの中には全角スペースを可視化するものもあるくらいです。

123456789Oのような全角半角数字の入り混じった文字列なんかもプログラマキラーと呼べるでしょう。ちなみにこれ一番最後の文字は大文字のオーです。

[/column]

Footnotes

  1. これはファイル名という、大文字小文字の区別をつけないファイルシステムが横行してることもあり、キャメルケースやパスカルケースがふさわしくないとされ、かといってスネークケースでは見栄えが悪いという心理が働いているのでは?と筆者(erukiti)は考えるものの、本当にそうなのかは不明です。