VC++2008で変数名・サブルーチン名に日本語を使用する際の問題や注意

このQ&Aのポイント
  • VC++2008で変数名やサブルーチン名に日本語を使用する場合には、発生するであろうバグや不具合はほとんどありません。
  • コードに日本語を使用すること自体には賛否がありますが、コンパイルできるのであれば使用しても問題ありません。
  • 開発したいプログラムが学術計算を目的としており、公開しないため問題はありません。
回答を見る
  • ベストアンサー

変数名に日本語を用いる際の問題や注意

 今晩は、質問させていただきます。どうぞよろしくお願いいたします。 環境:Win7 Pro 64Bit、VC++2008 VBAが好きでコーディングはよくやっておりますが、VC++はまだ始めたばかりでございます。 何卒よろしくお願いいたします。  VC++2008で変数名・サブルーチン名に日本語を使用した際に、「発生するであろうバグや不具合」というものはあるのでございましょうか? コードに日本語を用いる事自体には賛否両論あるようですが、ネットを検索しておりましても「コンパイル出来るのだから使ってもいいのでは?」というご意見しか見つけることが出来ませんでした。  開発したいプログラムは学術計算が目的で、公開せず自分一人で使用する予定でおります。  もしお詳しい方がいらっしゃいましたら,どうぞよろしくお願いいたします。

  • MKT_
  • お礼率99% (329/330)

質問者が選んだベストアンサー

  • ベストアンサー
  • wormhole
  • ベストアンサー率28% (1622/5658)
回答No.2

>VC++2008で変数名・サブルーチン名に日本語を使用した際に、「発生するであろうバグや不具合」というものはあるのでございましょうか? ないです。 厳密にいえば、VC++2008の仕様として識別子に使える文字以外を使用してるわけですから、 それはVC++2008のバグや不具合ではなく「識別子に、そのような文字を使ってる事がバグ」だからです。 http://msdn.microsoft.com/ja-jp/library/565w213d(v=vs.90).aspx

MKT_
質問者

お礼

 wormhole様  どうもありがとうございます!m(_ _)m >識別子に使える文字 >http://msdn.microsoft.com/ja-jp/library/565w213d(v=vs.90).aspx  初めて拝見致しました。と言いますことは、ここで規定している文字以外は「使うな」と言うことでございますね^^;  おそらく「保証対象外」であるのはほぼ確実であろうと考えてはおりましたが、実際に「変な挙動」をしたケースがあるのかどうかを知りたかった次第でございます。 >ないです。 とはっきりご回答いただき助かりましたm(_ _)m  wormhole様のような、解答数の非常に多いお詳しい方に拝見いただけて良かったです。この度はご親切に誠にありがとうございました!!m(_ _)m

その他の回答 (1)

回答No.1

なぜ、発生するであろうバグや不具合」を気にしてまで日本語を使いたいのかしら?

MKT_
質問者

お礼

 episteme様  はい、FORTRAN(英語のみ)でコーディングしていた時と比べ、vb.netでわざと変数名を全て全角文字にしておいた時は、見直す際に「自分が作成した変数」がコード全体の中の何処にあるのかがエディタ上で非常に分かりやすく、コーディングとデバッグ作業が非常に早かったためです。  英語は非常に好きですので「日本語⇔英語」翻訳で困る事はございませんが、英語は説明文が長くなる事が多いです。 日本語は「漢字」の機能が非常に良く、2文字だけで表現出来る事が多いためコードが短くなります。 例えばまず【例2】では「Str最大磁束密度」が「自作した変数」でありかつ「コード中のどこにいるのか」が一瞬でわかりますが、【例1】のように英語にしようと致しますと「magnetic flux density distribution」などという名前はとても書けず、そして省略しようとしますと意味の取り違えが原因でコーディングミスする可能性が出てきますので、「この変数に何が入っているのか」を上まで遡って確実に把握する必要性が出てまいります。  更に【例1】の場合は他の場所にその変数がいないのかどうかを半角英文字の中から探し出す時間も余分にかかります。  また、全角文字を使用することで、全体を見た時に「全角文字以外は変数名ではない」事が分かりますので、VbStrConv.ProperCase付近を眺めた際に「VbStrConv.」が「元々用意されているコードである」事も一目でわかります。  CBX_Replaceなどについては関数のReplaceと一見紛らわしくすらございます。 【例1】 If CBX_Replace.SelectedIndex = 0 Then DGVList(12, iline).Value = Str_MaxMagFluxDens + StrConv(Text2, VbStrConv.ProperCase) + Text3 + TextExtension ElseIf CBX_Replace.SelectedIndex = 1 Then DGVList(12, iline).Value = Str_MaxMagFluxDens + StrConv(Text2, VbStrConv.Uppercase) + Text3 + TextExtension 【例2】 If CBX置換.SelectedIndex = 0 Then DGVリスト(12, 行).Value = Str最大磁束密度 + StrConv(拡張子以外2, VbStrConv.ProperCase) + 拡張子以外3 + 拡張子 ElseIf CBX置換_StConv.SelectedIndex = 1 Then DGVリスト(12, 行).Value = Str最大磁束密度 + StrConv(拡張子以外2, VbStrConv.Uppercase) + 拡張子以外3 + 拡張子

関連するQ&A

  • 変数名やサブプロシージャーの名前を英語ではなく日本

    VBAにおいて 変数名やサブプロシージャーの名前を英語ではなく日本語でつけると どのような不具合が発生しますか? ネット上のサンプルコードなどを見ていると、 Dim i As Long など、変数名を英字にしてありますが 自分は Dim 行 As Long Dim 数 As Long などにしてしまいます。 このように日本語で変数名をつけると どのようなデメリット・不具合が発生するのでしょうか? コードとして見にくいだけですか? ご回答よろしくお願いします。

  • 【VC++2005】ソースの書き方:コーディングを****.hのファイルに書いてもいいでしょうか?変数名の命名規則はありますか?

    VC++2005の超超初心者です。 現在、VC++2005(Express Edition)でCLRでプロジェクトを つくり、いろいろとコーディングしています。 今まで、参考書「作って覚えるVisual C++ 2005 Express Editon」 を利用して、半分泣きながらコーディングしていました。 その参考書では、コーディングを*****.cppでなく、 ****.hのファイルにすべて書いているのですが、いいものでしょうか? 先輩が残していったVC++6.0のソースを見ると、cpp内に書いていますが どちらがよろしいでしょうか? また、他の参考書を見ると、変数名の先頭に「m」をつけていますが、 何か意味があるのでしょうか? (変数名をつける時の作法ってありますか?) せっかくなら、きれいなソースを書きたいと思うので、 詳しい方いましたら、ご教授頂きたく思います。

  • VC++にてメンバ変数名を作成し使用する場合

    VC++6.0を使用しています。 ダイアログにラジオボタンが40個存在し それぞれのメンバ変数名はm_day1~40です。 特定のラジオボタンを指定し、”1”と表示したいのですが、 下記のようにコーディングを行うと 「'SetWindowTextA' : 'CString' のメンバではありません。」 とコンパイルエラーが出ます。 何か良い改善策はありますでしょうか? 宜しくお願い致します。 char strResult[33]; CString strMakeDay; strMakeDay = "m_day"; strMakeDay = strMakeDay + itoa(intFirstWeek + 1, strResult, 10); strMakeDay.SetWindowText("1"); //intFirstWeek:int型の引数です

  • 変数名のつけかたについて

    はじめまして。ipotaと申します。 ちょっと変な質問かもしれませんが、idやclassの変数名の名前ってどうやってつけていますか? いろいろなサイトのソースを見ていると、 変数名の始めに「my」をつけたり、 日本語のローマ字読みでつけていたりと、 一定のルールで名前を記述しているサイトをお見かけします。 自分はこうゆうルールを決めているなどをお聞かせ下さいますか?

  • 同じ変数名で値がいくつかある場合の処理

    http://oshiete1.goo.ne.jp/kotaeru.php3?q=731400の質問の続きなのですが、変数名もいくつデータが送られてくるかもわからない状態なのですが、同じ変数名で違う値が送られてくる場合(例えばチェックボックスとかセレクトボックスのマルチプル)はどのようにすればすべての値を拾えるでしょうか。 また、変数名をすべて日本語にしたいのですが、何か問題などあるでしょうか。 よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • バンディクー(bandicoot)の日本語の学術名(呼び名)教えて!

    オーストラリアに生息する有袋類バンディクー(bandicoot)の日本語の学術名(呼び名)教えて下さい! 袋ねずみはどうも有袋類の事を指しているようなんで...。 出来れば生物学者や獣医さんのような方の確実性のある返答のみ待ってます。

  • エクセルVBAでサブルーチンへの変数の配列渡し

    エクセルVBAで、メインで使用してる配列変数(の値)をサブルーチンに渡したいが、どうすればよいでしょうか。(なお、メインプログラムは大きいためこれ以上は書けないのでサブルーチンを使用) よろしくお願いいたします。

  • エクセルのファイル名に変数を指定して開く方法

    エクセルのVBA初心者です。 最近、といっても2~3日前に始めたのですが、簡単なところで つまづいてしまい、本を読んでもにっちもさっちもいかず、困っております。 下記にやりたいことと、構文を記載しますので、お手数ですがアドバイスを 頂ければ助かります。 <やりたいこと> 特定のセルに記載された文字をファイル名としたエクセルファイルを VBAで開きたい。 <構文> Sub W() Dim ファイル名 As Integer ファイル名 = Range("C5").Value Workbooks.Open "D:\日本\データ\ファイル名.xlsx" End Sub <問題点> 上記のように構文を組んでも、「実行時エラー '1004'」なるメッセージが出て 「***が見つかりません。ファイル名およびファイルの保存場所が正しいか...」とのメッセージが出てしまいます。 C5のセルにはファイル名が記載され、このファイル名を変数としたつもりです。 VBAが入っているファイルは、「日本」というフォルダに入っており、変数によるファイルは「日本」というフォルダの子供である「データ」というフォルダに入っています。 アドバイスよろしくお願いします。

  • Windows7のバグか?日本語のユーザー名を使うとエラーがでる

    Windows7のバグか?日本語のユーザー名を使うとエラーがでる C#のプログラムをwindowXPからWindows7に移行しました。 このプログラムは他のエンジンファイルを呼び出して結果を取る処理があります。 なぜか、そのエンジンの実行が失敗になります。 デバッグしてみたら、C:\Users\ユーザーアカウント名\XXXXXXX の中のファイルを作ろうとするときに、エラーがでてきました。 try-catchでエラーメッセージを見ると、日本語のアカウント名が文字化けになっています。 もしかして日本語のユーザー名を使ってはいけないと思いながら、英語のユーザー名でやってみたら、うまくいきました。 他に、解決方法はありますか?

  • BCCでの日本語ファイル名の扱い

    こんにちは。 現在WindowsVistaで、Borland C++ Compiler 5.5(日本語版)を使い、プログラミングを行っています。 最近、bcc32.exeでソースファイルをコンパイルする際に、ソースファイルの名前に一部の日本語が含まれている場合は、コンパイルできないという事に気が付きました。 例えば、「161_ポインタの基礎.c」というソースファイルをコンパイル使用すると、以下の様にコンパイルエラーになります。 ------------------------------------------------------------ >bcc32 -c "161_ポインタの基礎.c" Borland C++ 5.5.1 for Win32 Copyright (c) 1993, 2000 Borland 161_ポツンタの基礎.c: エラー F1009 161_ポツンタの基礎.c: 入力ファイル '161_ポツンタの基礎.c' をオープンできない *** 1 errors in Compile *** ------------------------------------------------------------ どうやら、「イ」という文字を、コンパイラが「ツ」と認識してしまっているようです。 こういった問題の解決策をWebで検索したのですが、見つける事ができませんでした。 ちなみに、僕の使っているBCCはすでに日本語版ですので、日本語化が必要というわけではなさそうです。 そこで解決策を御提供頂きたいと思っています。 何でもいいので、よろしくお願い致します。

専門家に質問してみよう