• 締切済み

変数名や関数名の命名方法

どうも初めて質問させていただきます。 私はプログラマの2年生で、現在C++で作業しています。 最近になってようやくプログラミングに自信を持てるようになり、 だいぶコーディングも早くなった気がしています。 ですが、いつも変数名や関数名またはクラス名といった名前を付ける際に 非常に時間がかかってしまいます。 和英辞典を使って調べたりするのですが、 そのまま名付けても、他の人が見て意味が理解できなさそうなことが多いです。 みなさんは変数名など考えるときに、どのようにしていますか? 何かプログラミング専門の和英辞典みたいな書籍など出ているのでしょうか? お役立ち情報ありましたら、どうぞよろしくお願いします。

みんなの回答

  • likipon
  • ベストアンサー率38% (44/114)
回答No.5

最近は比較的長い名前を使いますから, a. 変な省略をすることなく (standard → std とか) b. 英語として正しい 事が大事ですよね. 細かいコーディング規約はたくさんあるでしょうが, 基本は上記の2点となる気がします. 特にメソッド名でbがきちんとしていれば, 何かを自分でするのか, あるいは外からされるのか, そういうのがよく記述できて コメントレスのコーディングに一歩近づきます. ただ, bをきちんとやるのは日本人には厳しすぎて (あるいは, きちんとやっても読む側が理解できないと意味ない) 今日的な命名法の実践はなかなかできないかもしれません. その点, それこそローマ字や日本語(2バイト文字)なんかの変数命名も 処理系が許すのであれば悪くないと (半ば本気で) 思ったりもします.

  • jacta
  • ベストアンサー率26% (845/3158)
回答No.4

一番重要なのは、同じ意味の語に対して異なる呼称を用いないことです。 仕様書を日本語で書いて、コーディング時に英語にしようとすると、元の用語に対して複数の訳語が発生してしまい混乱の元になります。 次に大事なのは、コメントがなければ分からないような名前にしないことです。 これは命名とは異なりますが、変数の有効範囲を必要最小限にすることも大切です。有効範囲が十分短ければ(for文の中だけなど)、一文字名でも十分です。 そして、具体的すぎず、抽象的過ぎない名前にします。 具体的過ぎる名前というのは、例えばシステムハンガリアンのように型名を識別子に含めるようなやり方です。 抽象的過ぎる名前というのは、flagのように何のフラグか分からないような名前です。ただし、有効範囲が十分狭ければ、これでも問題ありません。

takeshis
質問者

お礼

回答ありがとうございます。 英語も日本語同様、ひとつの単語でいろいろな意味を持っていますね。 和英辞典で引いていると、よくこの問題にぶち当たってしまいます。 変数の有効範囲が狭ければ名前の抽象度が高くてもいいというのは とても興味深いですね。 その辺も考えながら実装していきたいとおもいます。

  • S117
  • ベストアンサー率40% (18/45)
回答No.3

英語の意味などはあまり深く考えないで書きます。あいまいな部分は宣言時にコメントで補足します。また、少なくとも同じ関数・クラス内では名前の付け方を統一します。 良い例) FILE *outfp; /*出力用ファイル*/ FILE *infp; /*入力用ファイル*/ char *outpath; /*出力ファイルパス*/ char *inpath; /*入力ファイルパス*/ 悪い例) FILE *file; FILE *fin; char *outfile; char *fout; 悪い例では、コメントがないですし、名前の付け方に統一性もありません。仮にコメントが付いていてもわかりづらいです。こんなソースを意図的に書く人がいたら、その人には悪意があります。ただ、ほかの変数の宣言にまぎれたり、後から変数を追加したりした場合に、こうなることはあります。実際上記のようなソースは見たことがあります。 ローカル変数ならこれで十分ですが、クラスのメンバとなるともう少し考慮することが増えます。例えば似たような物がほかのクラスにあれば、それにあわせます。新しく付けるなら、無理に省略せずに書くことが重要です。自分なりの命名基準があればいいのですが、とりあえず適当なライブラリのマニュアル(MSDNとか)を眺めるといいかもしれません。 ちなみに私が英単語を調べるときはエキサイト辞書を使ってます。

takeshis
質問者

お礼

回答ありがとうございます。 ライブラリのマニュアルは参考になりそうですね。 やはり日本人よりもアメリカ人の命名の方がかなり信頼できそうです。 私も英単語を調べるときはエキサイト辞書を使用していましたが、 No.2の方に教えていただいた http://veryname.ddo.jp/に切り替えようと思います。 S117さんも試してみては。。。

回答No.2

下記サイトを利用しています。 Ajaxになっていて素早く調べることができます。

参考URL:
http://veryname.ddo.jp/
takeshis
質問者

お礼

とても便利ですね。 今まではエキサイト辞書を利用していましたが、 それよりも素早く調べられそうです。 プログラミング時に常に起動しておきたいと思います。 ありがとうございました。

回答No.1

書籍は分かりませんが、 ・先頭大文字 ・大まかになにやるか(例:入出力ならIO~、XML扱うなら Xmlなど、で) 例:データの総合管理システムがあるとして、大きく   ・DB系 ・送受信系 ・ツール系   更にそれぞれ、   DB系((1)XMLファイル管理、(2)テキストファイル管理、(3)バイナリファイル管理)   送受信系((4)他システム送受信、(5)専用データ入力受信)   ツール系((6)メンテナンス機能、(7)簡易統計出力)等があるとして。   (1)Db_XmlFile() (2)Db_TextFile() (3)Db_BinFile() (4)SndRcv_Other() (5)SndRcv_InputOnly() (6)Tool_Mainte() (7)Tool_Toukei() というクラス名称の工夫だけでも問題ないのでは?   上記気持ち悪いならプロジェクト内で文字数を統一するとか。   2文字なら、SndRcv→SR、Tool→Tl   ソースファイルなら   Tool_Mainteの下に付加して    Tool_Mainte_Main.c(メイン)   Tool_Mainte_Init.c(初期処理) などなど。   地道に丁寧にで。地味で良い。

関連するQ&A

  • 変数名のこだわりについて

    私はC言語始めて10ヶ月ぐらいのものなのですが、 現在ゲームプログラミングを学んでいます。 C言語で用いている変数名や関数名、クラスのオブジェクト名 など、本当に適当につけていたのですが、 最近とてつもなくソースコードが読みにくくて 変数名のつけ方に規則みたいなものを作ろうと思うのですが、 どなたかゲームプログラミングなどのプログラミング をやっている方々、参考までに、どんな風に名前をつけているか を教えてください。 そういうことを記述しているサイトでもかまいません。 よろしくお願いします。

  • セッション変数の命名規則

    PHP5使っています。 1つのウェブアプリで、たくさんコーディングしていると、セッションの変数名がいつの間にかかぶってしまって、予期せぬ動きをしてしまうのではないかと心配です。 例えば、$_SESSION["id"]とか、ありがちな名前を使ってしまって、 それが実は違うロジックでも使われていて、そっちのページの方へアクセスして、元のページへ戻ってきたらなんかおかしなことになっている、というような現象は、起こりうると思います。 これを防ぐには、セッションの変数名がかぶらないようにするべきと思いますが、皆さんどのように命名していらっしゃいますでしょうか?または他にうまい解決法があるのでしょうか?

    • ベストアンサー
    • PHP
  • 関数、変数、引数について

    現在、ActionScriptを勉強をしていて、よく関数、変数、引数などがでてきます。 しかし、これらをただ漠然とは分かっていたつもりではいたのですが、最近今後のことを考え改めてしっかりと理解したいと考えているのですが、サイトや書籍などでこれらに関する記述を読んでも、いまいち理解しきれず戸惑っております。 これらは分かりやすく説明するとどういうことなのでしょうか? 大変初歩的な質問で申し訳ございませんが、どうか皆様の助言をお願い致します。

  • VB2008でのクラスや変数などの命名について。今VB6で作成したプロ

    VB2008でのクラスや変数などの命名について。今VB6で作成したプログラムをVB2008に移植中なのですが、名前の付け方で悩んでいます。 VB6のときはハンガリアン記法が推奨されており、クラス名は頭にclsをつけてclsHogeとかやっていたわけですが、VB2008ではそのような記法はもう主流でないと聞きましたので、clsを取っ払い始めたのですが、やっていくうちにそのクラス名が変数名やプロパティ名とぶつかっていることに気付きました。 Javaだとクラス名は大文字で始め、変数名や関数などは小文字で始める規則になっており、大文字小文字を区別する仕様なので問題ないと思いますが、VBでは区別ないので適用不可です。  VBにお勧めの命名規則はありますか?

  • 変数・関数その他の命名規則

    SharpDevelop(VB.NET)であるプログラムのソースを書いています。ビルド自体はできます。 先日、色々うろついていてFxCopと言うものを知り、実行してみると出るわ出るわ警告の山。一つ一つ片付けていきたいと思います。 でまぁ、現在以下のエラーが出ています。 IdentifiersShouldBeCasedCorrectly 大文字小文字をきちんと意識して書け、ということなのは何となくわかるのですが、どう直して良いかわかりません。また何故直すべきなのかも判りません。 直し方を教えてください・・・・というのは質問ではなく。 この警告に限らず、FxCopが良いとする変数・定数・関数・クラス名・列挙型etcの命名規則(理由 & 具体例)はどのようなものなのでしょうか?何か文献はありますか?FxCopのヘルプにはソレっぽい記述がある気がしないので・・・

  • [V.B.など] 変数名の付け方&考え方

    こんにちは。 プログラミングをしようとした際、変数名を何らかの形で統一したいな…と思うわけですが、ネットを見てもこれで決まり!と言うようなものが見つけられません。 例えばVisualBasicなどの"TextBox1"。 名前のフィールドにしたいような場合、 textboxName tboxName NameTextBox いろいろ思いつくことは出来るのですが、これで行こう!と言うようなものが出てきません。 アプリケーションハンガリアンで考えれば良いのかも知れませんけど、やはり良いものが思いつかないのです。 V.B.などでプログラミングされている方、お勧めを教えて頂けないでしょうか? 個人的な趣味から、仕事に使えるまで、幅広くお聞きしたいです。 よろしくお願いします。

  • PICに書き込むプログラムや変数の容量を少なくする方法

    16f877のpicマイコンでプログラミング作業を行っています もともとPC上でのソフト開発がメインだったので マイコンプログラムはいろいろ制約があり大変です 現在C言語によってプログラムを書いているんですが ccscでコンパイルすると容量不足でエラーがでます not enough ram for valiaホニャララ 等がよく出ます。 マニュアルを読むと変数を減らせとかいろいろ書いてありますが 減らしても改善できません。 知人に聞くとアセンブラで書くといいよと言われましたが アセンブラはわからないのでCじゃないとだめです なにか容量をあまり取らないコーディングやその他のテクニックをご存知の方 教えてください、お願いします。 また、参考になる書籍やURL等がありましたら教えてください

  • 「引数の書き方」と「メンバ変数とメンバ関数の名前」について、教えてくだ

    「引数の書き方」と「メンバ変数とメンバ関数の名前」について、教えてください。 クラス内のコード抜粋なのですが、下記はどういう意味なのでしょうか? ▼メンバ変数 var $j = true; ▼メンバ関数 function j($p = false){ if($p) $this->j = false; return $this->j; } $this->j(true); 分からないこと ・コードの意味全般 ・($p = false)と書かれている引数の意味 ・メンバ変数とメンバ関数の名前は同じでもよいか? 

    • ベストアンサー
    • PHP
  • 量子力学における演算子と変数

    量子力学におえける演算子とは何かよくわからなくて困っています プログラミングをやっているのでプログラミングの話をしますが、プログラミングにおいて演算子とは、感覚的に言えばある変数を引数にして処理をするための関数的なもの + - x / の四則演算子が基本 sin() exp()などが演算子と言われても理解できるのですが 量子力学では、位置を表すxやyなども演算子として扱うと言われ プログラミング的にはそれらは関数のオペランドであり変数なので混乱しています 誰か上手く説明できる方がいらっしゃったら教えて下さい Ψを使った演算子の交換についての項で詰まっています

  • クラス変数とクラスメソッドを教えてください

    みんさんどうもすみません。クラス変数とクラスメソッドなんですが、 何回本を読んでもイマイチ理解できません。クラス変数とクラスメソッド を使うことでなにがメリットなのか教えてください。例えばクラスメソッド の場合はメソッド名の前にオブジェクト名をつけなくていいとか、そういう 便利さのために使うんでしょうか?どうもまだ完全に理解できていないの で詳しい方いらっしゃったらどうか教えてください。よろしくお願いします。

    • ベストアンサー
    • Java

専門家に質問してみよう