キャメルケースとスネークケースを相互置換する正規表現
投稿日: 2017/05/23 更新日: 2017/10/11
正規表現
キャメルケースとスネークケースを相互に置換する正規表現を書きました。
備忘としてお使いください。
キャメルケースをスネークケースに変換
正規表現は次の通りです。
s/_(.)/¥u$1/g
スネークケースをキャメルケースに変換
正規表現は次の通りです。
s/([A-Z])/_\l\1/g
キャメルケースとスネークケースの違い
キャメルケースとは
「後ろの単語の先頭を大文字にする」書き方です。
キャメル(camel)つまりラクダのコブのように見えることが由来のようです。
camelCase
こんな感じ。
一番最初を大文字にする「アッパーキャメルケース」と、小文字にする「ローアーキャメルケース」という違いもあります。
CamelCase
こんな感じ。
アッパーキャメルは「パスカルケース」とも言います。
一般的にキャメルケースと言ったらローアーのことが多いですね。
スネークケースとは
「単語と単語をアンダースコアでつなぐ」書き方です。
スネーク(snake)つまりヘビのように見えることが由来のようです。
snake_case
こんな感じ。
どちらが良いか?
両者は優劣を争ってしばしば論争になることが多いです。
なぜ論争が絶えないかというと、
- どちらも甲乙つけがたいから
- どっちになったって死にはしないから
※個人の感想です
私的にはどちらが良いかは特にありません。
「郷に入っては郷に従え」という言葉があるように、慣習によってどちらを使うか決めれば良いと思います。
言語によっても何かしら推奨してますし。
チームのルールになければ、どちらか好みで決めれば良いでしょう。
一応、メリデメを示しておきます。
キャメルケースのメリット(一例)
- 短いので、タイプ量(コード量)が減る
スネークケースのメリット(一例)
- アルファベット慣れしてない人には単語間が空いていた方が読みやすい
この正規表現はいつ使うか?
この正規表現を使う上での推奨タイミングです。
- キャメル派がスネーク派を撲滅するとき
- スネーク派がキャメル派を撲滅するとき
そんなとき、一括置換しましょう。
※ただし、敵側も置換できることをお忘れなく(笑)
とまぁ冗談はさておき。
私の場合は、スネークをキャメルに変換する方が多いですね。
データベースのテーブル定義をクラス変数に変換するとき良く使います。
次の流れみたいな感じ。
- 画面UIを定義する
- データフローを定義する
- データベース設計をする
- プログラムを実装する
最後のところで良く使います。
データベースはスネークが多く、それ以外すべてキャメルが多いので。
適宜、置換をうまく使って実装したいものですね。