◆ キャメルケースだったりスネークケースだったり
◆ ローカル変数かプロパティで分けるのは ES6 だとあまり意味なさそう
◆ 関数かそれ以外の変数かで分けるの良さそうかも
◆ 言語デフォルトの命名規則に合わせるより合わせないほうがメリット多くない? 

変数とか関数とか名前つけるやつです

特に意味は無いですが たまたま見つけた preview page url という言葉を例にします

有名なの

有名なのは

スペースをなくして代わりに スペースの次の文字を大文字にするキャメルケース
previewPageUrl
PreviewPageUrl

もうひとつが

スペースの代わりに _ を使うスネークケース
preview_page_url

です

言語

キャメルケースの一文字目も大文字なのはあまりみないですが C# ではそうなってます

JavaScript だと最初小文字のキャメルケースで PHP だと関数はスネークケースでメソッドがキャメルケースです

C と C++ はあまり覚えてないですが fprintf みたいな省略して直接くっつけてるかスネークケースで クラス名だと キャメルケースだったような記憶があります

私の場合

最初に使ったのが C ですし 昔は基本的に 省略してくっつけて区切りがないようなものでした
あとから読みづらいので 適度にスネークケースを混ぜる感じ
それでも 1 年ほどすれば読めない!ってなってましたけど

少しすると 省略しすぎはよくないかなと思って あまり長くなければ省略はしないけど変数書くたびに Shift キー押したり _ 入力したりが面倒すぎて 区切り無しで previewpageurl みたいなものでした
geturl とか keydown みたいな区切りが自然とわかるものならともかく previewpageurl はぱっと見てどこで区切るんだろうと少し考える必要がでてきます

最近なってくると 基本的には なにかで区切ることが多くなってきました
ですが キャメルケースかスネークケースどっちと決まってるわけじゃないです
言葉的に見やすい しっくり来る方っていう選び方です

PHP や C 系の影響もあるのかグローバルな関数や変数でキャメルケースはなんか気持ち悪いです
JavaScript では parseInt とかなってるはずなんですけどね

ですが 使い分けるなら PHP みたいなちゃんと使い分けてスネークケースかキャメルケースかの情報で 追加でわかる何かがあったほうがいいかな と思って使い分けを試してみたりというのがここ最近です

候補は 関数か変数か と ローカル変数かプロパティか です

ローカル変数 or プロパティ

ローカル変数はスネークケースでプロパティにはキャメルケースで書きます
var sample_variable = 1
function this_is_not_property(){
var preview_page_url = "http://----"
var obj = {
thisIsProperty: 1,
camelCase: 2
}
if(obj.camelCase > obj.thisIsProperty){
preview_page_url += "#aaaa"
}
}
こういうの

コードの中身は意味ないです

obj.camelCase っていうプロパティ書くときにキャメルケースだとなんか安心します
でも定義するときの . がないところに camelCase: 2 って書くとなんか不安になります

定義するときはともかく 基本的には . のあとにキャメルケースなのでけっこう気に入っていました



……ですが ES6 でプロパティとローカル変数の区分がなくなってきました
function fn(){
var test_data = 1
var obj = {
test_data,
camelCase: 2
}
return obj
}
var {test_data, camelCase} = fn()
console.log(camelCase) // 2
function fn2({testData, camelCase}){
console.log(testData, camelCase)
}
var obj = {
testData:1 ,
camelCase: 2
}
fn2(obj) // 1 2

ローカル変数をプロパティにしたり プロパティをローカル変数にしたりが簡単にできるようになりました
便利ではあるのですが そうなると この命名規則は使えないです

関数 or 変数

JavaScript だと関数も変数に入っているので 変数が関数かどうかということになります

関数定義の
function makePage(){

}
とか . のあとじゃないところに キャメルケースが来ると不安になりますが JavaScript では parseInt と書くわけですし 関数はキャメルケースにします
でもローカル変数の 文字列とか数値がキャメルケースなのはもっと嫌なので 関数以外ならスネークケースにするようにしました
function camelCase(preview_page_url, callbackFunction){ }
var functionExpression = function(){}
var test_data = 3
functionExpression(test_data)
var obj = {
sample_string: "abc",
sampleMethod: function(){}
}
こんな感じ



とは言ってみても これまでのことから固定されずにフラフラと変わっていきそうですけど

言語のデフォルトに合わせるべき?

ところで 言語のデフォルトに合わせた命名規則にすべきだって言う人もいますよね

私としては 別に合わせる必要ないんじゃないの?って思います

むしろ 分けたほうがこれは自分で作った変数や関数というのがわかりやすいです
一昔前の JavaScript みたいなビルトインが少なめなら そう困らないですが C# 使った時なんか 山のようにメソッドがあって 自分でもフレームワークのコードなのか自分(もしくはフレームワーク外で自分以外の誰か)のコードなのかわからなくなることがあります

特に普段読まない言語で誰かが書いたコードを読んでいるときは 言語のビルトインかそのプログラムを書いた人が作った部分かが簡単にわかるのはかなりうれしいことです

また 用意されてるメソッドがいっぱいあると使いたい名前が被ることがあります
他にいい名前がないくらい適している名前で 内部でビルトインの同名の関数を呼び出すほどなときに キャメルケースかスネークケースかが言語のデフォルトと違っていれば 同じ名前で定義できます

いかにもその言語にありそうな機能のライブラリを作って 中は見ないでいいブラックボックスにしたいものだけ デフォルトの命名規則に合わせれば 最初から用意されていて中は知らなくていいものに溶けこませることもできます


そんなわけで 合わせてビルトインの関数・変数と自分のコード全体を同じようにしてしまうより あえて分けるくらいのほうが メリットあるんじゃないかなって思うんです

合わせるメリットって 全体的に調和しててなんか綺麗 ってくらいだと思うんです
それなら はっきり自分のコードとビルトイン部分がわかれているというのも綺麗といえるんじゃないかなって思います

おまけ

この感覚をわかってくれる人いないですかねー
document.querySelector()
は安定感あって安心できます
でも
addEventListener()
はなんか不安になります
window.addEventListener()
になると問題無いです