変数名を冗長にしたら変数名で悩まなくなった
「短い変数名が良いのだ」という謎のルールを持っていたために長い間、事あるごとに変数名で悩むことが多かったのですが
躊躇なく長い変数名を使うことで変数名の作成で悩む機会を減らしました
という話しをサンプル交えて少しだけしていきます
変数名で悩んでしまう例
var chars_o = getOrigin(); // origin characters の略
var chars_e = encryptoCharacters(chars_o); // encrypto characters の略
var chars_c = specialCut(chars_e); // cuted characters の略
var chars_c = concatFinalForm(chars_c); // concat characters の略
// 最後で変数名が被ってしまい、こういう場面で悩む
こんな感じで、略称作ろうとした時に同じアルファベットが被ったりして「どうしよう??」となるんですよね
最終的に番号付けたり、2つ目だけフルネームにしたりとか色々足掻いて動作は問題無いけど統一感を失った見た目に汚いコードになってしまったりしてました
省略しないことで解決を図る
var originCharacters = getOrigin();
var encryptedCharacters = encryptoCharacters(originCharacters);
var cutedCharacters = specialCut(encryptedCharacters);
var concatedCharacters = concatFinalForm(cutedCharacters);
省略しないことで統一感を失うという事態を回避しました
冗長な変数名のデメリット
関数名、クラス名と被った時に結局悩む
具体例の以下の箇所
var encryptedCharacters = encryptoCharacters(originCharacters);
関数と変数が名前被りを起こしかけています
こういった場面では、「関数側に動作を付け加える」を根本的なルールとして、そもそもそういう状況を減らします
以下修正後
var encryptoCharacters = createEncryptoCharacters(originCharacters);
関数名含めて全体を修正する
var originCharacters = getOriginString();
var encryptoCharacters = createEncryptoCharacters(originCharacters);
var cutCharacters = cutSpecialForm(encryptoCharacters);
var concatCharacters = concatFinalForm(cutCharacters);
諸々修正して統一感を保てたと思います
COBOL時代こんな感じだったのかもとか思いました(COBOLほぼ未経験だけど)
短い変数名は格好良い、抽象化と相性が良い(ように見える)
という理由によりわりと最近まで10年以上の期間、短い変数名、関数名にこだわってたんですけど、検索しづらい、置換の時めんどくさいなどのデメリットに耐えられなくなって冗長な変数名、関数名をつけるようになりました
こういった組み方に変更して2年目くらいですが今のところ快適です
オンラインテキストエディタでもローカルでも、入力補完機能が当たり前についているので想像していたほど入力コストがかからずストレスも無いです
chatGPTに目的を告げて変数名を考えさせると割と良い物出してくれるので、それも解決策の一つになりますね
以上でした