Dim SATOU As Boolean は個人的にFalseにしたい
◆ありふれた命名。
ある日曜日にポチたまという番組を見ておりました。あ、録画です。決して、地方だから日曜日に振替で放送されるということはありません。
親が見ていたのでなんとなく見ていたのですが、その番組中新しく飼うことになった犬に子供が名前を付けていたのですよね。「ゴン」という名前でした。
なぜそんなありふれた名前を付けるのか。
「じゃあ、あんただったらなんて名前を付けるのよ」
逆に母親にそう言われて「……え?」と固まってしまいました。
「うーん、いくぞうさんとか?」(注:好きなバンドのベーシストさん)
「なによ、そのセンスのない名前!!」
「センスがないってなんだよ!!むきー!!」
良い感じに言い争いになったあと、ふてくされて休日の趣味であるプログラミングに戻ったのですが、そこで変数に名前を付けながら思ったのです。
「なんでもそうだけど、命名規約ってあるよなぁ……」
ふと、自分のコードを見てみました。ソートするときに、退避用の変数を1つ作っていたのですが、名前が
「intTAIHI」
うーん、微妙。かっこわるい。分かりやすい変数名ではあるのですが、とりあえず名前を付けた感じが否めません。
◆そもそも命名規約ってあるんだろうか?
世の中の「モノ」には「それらしい」名前をつけてあげないといけないようになっています。なぜなら、それがなにかわからなくなるから。
変数ってそれが顕著に出ていると思うのですよね。昔、プログラミング初心者な会社の新人君が書いたコードを見たときに悲鳴をあげたことがあります。変数名が全部自分の名前+連番でした。
「SATOU」
とか
「SATOU1」
とかとか。
「変数名はもうちょっとわかりやすくね……」
「じゃあ、どんな名前をつければいいんですか?」
「……えーっと」
無言で「コードコンプリート」という本を投げておきました。
が、この本、持っているのはいいんですが、わたしもあんまり読んでなくて(俗に言う宝の持ち腐れ)変数名を「なんとなく」でつけていたんですよね。先ほど書いたように退避用の変数には「TAIHI」とか。
◆昔教わったことを思い出してみる。
最初に入った会社で、命名規約に関しては厳しく指導された記憶があります。
って、習ったくせに「intTAIHI」という残念な感じです。悪い育ち方をしていると思います。当時の先輩、ごめんなさい。
基本的に「型名の略字+使用用途がわかるような英単語」でしたね。今、当時のノートを見返したらそんなことが赤文字で書いてありました。
たとえば、集計用だったら「lngSum」とか。Long型の集計関数という意味です。簡単な英単語ぐらいならわかるのですが……はっきり言うと、英語が得意でない人には酷です。
「顧客番号」とか英語にしろ!!っていわれてもソラででてこないですよ!!
ま、顧客番号ぐらいなら最近すぐ出てくるようになりましたけど(悲しきがな、物流業界)。うーん、それにしても開発標準ってよくわからないですね。世の中の人はどうやって名前を付けているんだろう。
◆先輩が書いたコード。
ふと疑問に思ったので先輩や後輩が書いたコードを見てみました。
先輩→基本的に英語。しかしスペルミスが多い。後輩→ローマ字。面白いほどに真っ二つでした!(実話)
先輩の姿を見て後輩は育つといいますが、そんなことは全くなく。先輩も後輩も我が道を行く人だなぁ……と思ってげらげら笑いました。でも基本は型名を頭につけておりました。このあたりはわりと標準なのでしょうか?
◆好きです。
自分的に出した結論は「やっぱり習ったとおりに型名+わかりやすい英単語」
にしようということでした。
やっぱり「そうやって本にかいてあったし、習ったことだから」というのがあるんですが、裏背景としては「英語の方がなんとなくかっこいい」からです。不純な動機でごめんなさい。
でも、英単語しらべるぐらいだったらローマ字にしたほうが時間的効率もいいと思うんですよね。日本人としては。
そんなわけで、個人で使うプログラムには未だに型名+ローマ字をつかってしまうダメプログラマが生まれるわけです。
もちろん、チームで共有するコードはちゃんと英語に直しますけどね。
「そんなの会社に開発標準があるんじゃないの?」
とも思ったのですが
「……ない」
創立してずいぶんの会社の癖にそういう標準がないんですよね。
だから好き勝手に命名しちゃうんだよ……。と、いいわけなんぞしてみる。自社に戻ったら開発標準を提案してみようかな?と考えています。
※注:この文章は基本的にVB目線で書かれています。JAVAの命名規約はpublicな変数にはmがプレフィックスでつくとかあるみたいですけど、そのへんはよくわからないのであしからず~。
コメント
ヴァン
こんにちは。
命名は悩みますよね。
一人目は悩んだけど、二人目は好きなマンガの主人公の名前を付けたり...
という話でない?
あー、アセンブラーな私は6文字で何とかしようと必死でした。
基本的に独学なので適当でした。
あるプロジェクトでは厳しく決められました。
変数は頭に名詞と付けろ。関数は頭に動詞を付けろとか。
VBの世界に入ったら...orz
まあ、プロジェクトのメンバーで判り易く命名出来れば良いかなと。
組長
こんばんはー。
私は開発系じゃない人ので、全然、お門違いも良いとこなんですが、見逃せない一文が・・・。笑
>「うーん、いくぞうさんとか?」(注:好きなバンドのベーシストさん)
もしかして、D●ag●n As●ですか?
森姫
ヴァンさん
そうです。一人目はやっぱり一番悩みますよね。
・・・ってまだ子供いませんけど(笑)
> 変数は頭に名詞と付けろ。関数は頭に動詞を付けろとか。
関数名はたしかに動詞をつけろとよく言われました。
英語さっぱりなのでどうやって動詞にしようか悩んだ記憶が。
プロジェクト内でわかりやすいルールつくっておかないと
後々大変なことになりますよね。
同じ機能なのに違う名称とかで混乱したり。
森姫
組長さん
まさかここの文章に反応する人がでてくるとは思いませんでした(笑)
ちなみにDrag○n A○hではありません。(あんまり伏せ字になってない)
たしかにこの人もいくぞうさんですけどね。
あずき
おはようございます。
あずきと申します。
実は1回目からこっそり読ませていただいてました。
たしかに命名には悩みます。
大学の卒業研究指導教授の命名の癖の影響をもろに受けてますので、会社では直すのが大変です(2年目ですが、まだ完全に直ってない
大学の教授は、英語で単語間はアンダーバーで区切るという命名をしてましたので、それにあわせていたんですが。
入社後JAVAの勉強をして「クラスは最初大文字で!」とか、「変数は小文字で!」とか、「単語の頭文字は大文字で!」とか、未知の領域で。
しかも、うちの会社はしっかりとした命名に関する基準がないので、先輩方もばらばらでどうして良いのやら・・・
そんなこんななので、Javaの研修で習った命名の基準に合わせようと奮闘中です。
本当に命名って悩みますね・・・
てんじゃ
私はコーディングの時間の3分の1は、命名に時間を割きます。
社外で作るアプリは、自社外の人がソースを触ることが多いので、できるだけ美しいコードを書くようにしています。
私にとって命名は、設計書がわり、プログラマどうしの情報交換の代わりで、
設計書確認したり、口頭で説明しなくても、命名見ればわかるというのが理想。
見本は、その言語のAPIの命名方法を参考にして付けます。
ローマ字だと同音異義語で意味がわからなくなるので、使いませんね。
型を変数名の一部にするのは、型指定しなかった昔のVBの名残かと。
命名規則は、こうした方がいいと理由と主に説明できる人は優秀なプログラマが多いです。経験上。
おもくそ
初めまして。
おもくそと申します。
命名で印象に残っている事と言えば、VBScriptでWebサービス呼び出すプログラムで、SOAPClientオブジェクトを
Dim sekken
なんて宣言してるのがありました。
Dim yoshiwara でなくて本当によかったと思います。
VBの命名規則に関してですが、.NET以降は型を表すプリフィクスは付けない流れのようです。型チェックが厳しくなったからですかね。
参考:http://dobon.net/vb/dotnet/beginner/namingrules.html
Jitta
VB なら、本家はこのあたり。左のメニューも参考。
一般的な名前付け規則
http://msdn.microsoft.com/ja-jp/library/ms229045.aspx
名前に関するガイドライン
http://msdn.microsoft.com/ja-jp/library/ms229002.aspx
変数の型を変数名に付加するのは「システム ハンガリアン記法」といいますが、昔考察しているのでご参考に。
「サニタイズいうな」と「ハンガリアン」
http://blogs.wankuma.com/jitta/archive/2008/07/06/147596.aspx
システム ハンガリアンを養護してみるテスト
http://blogs.wankuma.com/jitta/archive/2008/07/07/147822.aspx
森姫
あずきさん
第1回目からありがとうございます!
言われてみれば、アンダーバーは使わないですねぇ・・・。
これも人の個性でしょうか。
やっぱり会社内だけでもいいから決めておいた方がいいですよね、基準。
ちなみに
> 「クラスは最初大文字で!」
これは知らなかったのでびっくりしました。
森姫
てんじゃさん
やはり「美しく」というのは永遠の課題ですよね・・・。
自分向けだからと言ってすごいネーミングにはしないようにします。
> 設計書確認したり、口頭で説明しなくても、命名見ればわかるというのが理想。
これたしかに理想ですね!!
命名見ればだいたいが伝わってくれるとありがたいですし、
そうありたいものですよね。
3分の1をかけてもおかしくはないと思います。
たかが命名、されど命名。
森姫
おもくそさん
> Dim sekken
これ、最初よくわからなかったのですが、
良く見たら
「あぁ!!」となりました。
ある意味すばらしいネーミング・・・(笑)
え?!.NET以降は型名つけないんですか?!
・・・知らなかったです。(だめじゃん)
VB6世代なのがばればれですね。
森姫
Jittaさん
天下の本家マイク○ソフトさんですね!
教えていただいたサイト、週末に確認します~!!
ハンガリアンという記法というのは
たしか本にも載っておりました。
サニタイズは言葉すらしらなかったです。
自分の勉強不足を感じます・・・。