質問: function () { 処理 } C(c).click(function(event) { B() } ... ``` --- こういった組み方をしていたため、 別の部分で `i` でeach文を回そうとしたところ、 `i` がすでにべつの処理で使われていたためにエラーが起きました。 また、js内にGoogle Analyticsのタグを埋め込んだところ、 `ga`という変数が使われていたためエラーになりました。 --- ↑のような事案が何度か発生しているし、 何をしているかわかるような命名方法に変えて欲しいといったように頼んだところ、 この方がファイルも軽くなるしスマートだ、変えるつもりはないとの意見でした。 確かに、何度も同じ変数を使用する、コードも長いjsなので、ぱっと見綺麗です。 しかし単一アルファベットなため検索も難しく、読み解くのにかなり時間がかかります... ただ、この単一アルファベットでの変数のつけ方ですが、 外注のjsだけでなくどこかのjsプラグインだったり拾い物のファイルでも何度か確認しました。 単一アルファベットでの変数の命名方法は正しいのでしょうか?
回答: ### 短い変数名を使うこと まず、「正しい」「間違っている」の二面性で考えるのは止めましょう。 「正しさ」を解釈するには考えるべき要素が複数あり、「不変的な正しさ」というものは存在しません。 長所と短所をリストアップし、総合的に判断するようにしてみて下さい。 そして、**重要なのは「~が正しい」の結論ではなく、その理由(長所/短所)です**。 | 長所 | 短所 | | --- | --- | | タイプ数が短い、サイズが小さい | 可読性が低い、保守性が低い | 「サイズが小さい」は圧縮ツールを使えば、同様の事が可能な為、この書き方を好む人は次のような人です。 * 出来るだけ短いタイプ数で気持ちよくコーディングをしたい人 * 書いたコードを保守する場面を考慮しない人 * 自分がコードを分かれば良い人(他人がコードを読む配慮がない) 端的にいって、ショートコーダーが好む書き方ですね。 (初めは「実は、質問文のコードは圧縮ツールで圧縮されているのでは」と考えましたが、ツールで圧縮した場合は `ca`, `ga` 等の二文字の変数名が残る理由がないので、人間が書いているコードだと思いました。) ### 変数名の競合 > > 別の部分で i でeach文を回そうとしたところ、 > > i がすでにべつの処理で使われていたためにエラーが起きました。 > > > これは別の問題です。 スコープが正しく分割されていれば、別スコープ上にある変数 `i` と同じ変数名で変数宣言しても、別の変数 `i` として扱われるので、何の問題もないはずです。 ``` var i = 'foo'; jQuery.each([1,2,3], function (i) { console.log(i); }); // ここで使われる変数 i は上位スコープの変数 i とは別物なので影響を受けない ``` > > また、js内にGoogle Analyticsのタグを埋め込んだところ、 > > gaという変数が使われていたためエラーになりました。 > > > js内にタグを埋め込むという事ですが、HTMLタグの文字列を `jQuery#html` で埋め込んでいるのでしょうか。 状況が良く分かりませんでした。 (html/css/jsの全てで文字列に対して「タグ」という名称を使う方がたまにいらっしゃいますが、用語は正しく使わないと正確に伝わらないと思います) Re: mimoshi_work さん