こんなプログラマはいつまでも"初心者"①

記事
IT・テクノロジー
煽り強めのタイトルを覗いてくださり、まことにありがとうございます。

本職でも副業でも様々な方のプログラムを拝見しますが、
中でも"初心者"様のプログラムは質が異なります。

この「こんなプログラマはいつまでも"初心者"」シリーズの記事では私がどんなプログラムを"初心者"様作であると判断するのかを紹介いたします。
あくまで一個人意見に過ぎませんが、
ご自身のプログラムと照らし合わせ、改善の一助となれれば幸いでございます。

命名が適切でない

命名はプログラミングにおける最重要要素の一つです。
変数、関数、クラス等プログラム内に留まらず、DBのテーブル名、カラム名、ファイル名、プロジェクト名までもが重要です。

ほとんどのプログラミング言語で、これら名前は何であろうとプログラムは動作します。
a.pyという名前のファイルにBというクラスが定義されていて、Bクラスはcというメンバ変数とdというメンバメソッドを持つ、という構成でももちろん問題なく動作します。
このようなプログラムを書いた"初心者"様は満足げにエディタを閉じることでしょう。


多くの"役に立つ"プログラムにおいて、
1度書いて終わりということはございません。


時間が経てばプログラムを使う場面の事情が変わり、修正が必要になるかもしれません。
業務なら、プログラムが誰かの手に渡ることもあるでしょう。

そうなった時、
未来の"初心者"様や"初心者"様からプログラムを受け取った方は、
プログラムを見るや否やきっとこう言うでしょう。

「なんだこのくそみたいなコードは」

プログラムが動作するかどうかはもちろん大切なことですが、
プログラムが読みやすいかどうかそれ以上に重要です。
なぜならば、プログラムが正しく動作していなかったとしても、
読みやすいプログラムであれば修正が容易だからです。

というわけで、命名のアンチパターンを思いつく限りまとめてみました。
このような命名は絶対にやめましょう。

1.テキトー

適当なのは大歓迎ですが、テキトーなのは大反対です。
aとかbとかcとか、英単語またはローマ字として読めないものは大抵このパターンです。
また、dataやflag等、抽象的すぎる名前もこのパターンと言えます。
そのデータがどういう役割なのかを正しく見極め、適当な名前を付けてください。

2.一般的でない略語

del_date
これは実際にとあるECサイト系プロジェクトで見かけた変数名です。
"date"は明らかに日付を意味しますが、"del"は何でしょうか?

背景や文脈が分かれば推測しやすいものですが、
全体的にくそみたいなコードであるという前提で、
文脈を読み解くのは困難な状況と仮定しましょう。

分かりましたか?
勘のいい読者の方ならもうお分かりでしょう。

delete

と思い浮かべていた方、残念ながら不正解です。
私と同じ轍を踏みましたね。
(これも何かの縁ですので是非私のサービスをお気に入り登録していってください)

正解は delivery
つまりdel_dateは配送日でした。

「酷い命名だ」と思われた方、さすがでございます。
「それくらいよくね?」と思われた方、懐が深いようで尊敬いたします。
「deliveryしかありえないじゃん」と思われた方、人と足並みをそろえるのもまた一興でございます。
「deliveryはdelにすべきだ」と思われた方、是非ご意見お聞かせください。

もちろん、プロジェクト内で頻出する語でしたら
略語にしてコーディングのスピード感を上げるのも有益です。
しかし、昨今のエディター及びIDEは入力補完が強力です。
deliveryが既出であれば、"del"まで打てば"deliveryと補完してくれるのではないでしょうか。
そうなればスピード感は大差ありません。

del_dateを例に挙げましたが、似たような原型を推測しにくい略語は多数存在します。
打鍵数よりも、あとからプログラムを読む人の認知負荷を軽減することに重きを置いてください。
(考える時間を短縮できればいいので、初出の略語に全綴りをコメントしておくのはとても有用です。)

3.役割とは異なる意味を持つ名前

xxx_dateなのに数値が登録されているなど論外です。

実装初期から役割が変化したのかもしれませんね。
面倒がらずにリファクタリングしましょう。
IDEのリファクタリング機能を使えば比較的楽・安全に名称変更できるはずです。

いかがだったでしょうか。

「アンチパターンは分かったけど、じゃあどういう命名にすればいいの?」と思われた方、
近日中に命名の仕方をまとめた記事を投稿しますので、しばしお待ちください。

「いち早く初心者を脱却したい」と強い志をお持ちの方、
是非私のサービスをご購入ください。
誠心誠意助言させていただきいます。

お時間いただき
ありがとうございました。
サービス数40万件のスキルマーケット、あなたにぴったりのサービスを探す