• ベストアンサー

命名規則 VB 構造体

VBの構造体の命名はどうすればいいですか? strXXX as string intYYY as integer ???ZZZ as 構造体 udtZZZ as 構造体 でいいのでしょうか? ユーザー定義型ということでいいのでしょうか?

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

  • ベストアンサー
  • KenKen_SP
  • ベストアンサー率62% (785/1258)
回答No.2

こんにちは。KenKen_SP です。 ご質問のように変数にプレフィックスを付ける表記をハンガリアン表記法 と呼び、MS がかつて推奨していたものです。特に Visual Basic 6.0 まで 広く使われていました。 これに従うならば、ご質問にある変数名で良いと思います。 しかし、現在は MS は推奨していません。それどころか、一転してハンガ リアン表記法はむしろ MSDN にある名前付けのガイドラインに違反した 表記法とされています。 詳しくは、MSDN ライブラリを参照して下さい。 これには賛否両論があり、どちらが良いのかは議論がなされている最中です が、今後 MS がハンガリアン表記法を推奨しないことを考えれば、いずれは 使われなくなく表記法ですね。 どちらが良いのか、その是非については述べません。ご自身が判断するべき ことだからです。何より大切なポイントは自分が見ても、他人がみても   「変数名はわかりやすく」 です。このような表記法の変化に振り回されて、このポイントがおろそかに なるようではどんな表記法も無意味です。その意味で #1 ご回答の > 1)見たら判る、(2)一貫している、ならばOKではと考えます。 は、的確でまさにその通りだと思います。 個人的な好みの話をすれば、私は通常変数にはプレフィックスを付け、 構造体のメンバには付けません。 Private Type STAFFINFO   ID   As Long   Name  As String   Address As String   Tel   As String End Type Sub xxxx()   Dim udtSI as STAFFINFO   With udtSI     .ID = 1     .Name = "名前"     .Address = "住所"     .Tel = "012-3456-7890"   End With End Sub のような感じですが、プレフィックスを付けると   With udtSI     .lngID = 1     .strName = "名前"     .strAddress = "住所"     .strTel = "012-3456-7890"   End With となって、通常変数なのか構造体のメンバなのか見難くなるからです。 余談ですが、構造体のことを VB では「ユーザー定義型」と表現してます。 私見でした。

pokepotto
質問者

お礼

貴重なご意見ありがとうございました。

その他の回答 (1)

noname#22222
noname#22222
回答No.1

マイクロソフトが推奨している命名規則に関する質問であれば、それで宜しいと思います。 が、私は、 Dim mudtMenu AS MENU_TYPE でなく Dim MyMenu As MENU としています。 Dim typMenu As MENU も、「ありかなー」と思います。 要は、(1)見たら判る、(2)一貫している、ならばOKではと考えます。 Private Type MENU   TitleCaption   As String * 24 ' トップメニュータイトル   MenuCount     As Integer   ' メニュー総数   SubItems(5)    As Integer   ' 各メニューの項目数   MenuNames(5)   As String * 16 ' 主メニュー名                    ' ----+----1----+----2----   LargeIcons(5, 19) As String * 24 ' Icons\Large\xxxxxxxx.ico   SmallIcons(5, 19) As String * 24 ' Icons\Large\xxxxxxxx.ico   IconTexts(5, 19) As String * 12 ' アイコンテキスト   AppTypes(5, 19)  As String * 1  ' アプリケーションの種類   AppNames(5, 19)  As String * 20 ' アプリケーション名   AppDescs(5, 19)  As String * 32 ' アプリケーションの説明   ViewMode     As Integer   ' 表示モード End Type Dim MyMenu As MENU

pokepotto
質問者

お礼

PCが動かなくなり、IDが分からなくなってしまって お礼が遅れてしまいました。 ご回答どうもありがとうございました。 参考にさせていただきます(^^)

関連するQ&A

  • 構造体配列

    こんにちわ。VB.NET初心者です。伝授お願いします。 VB6では Type Tpn_Index IdxSu As Integer idx(MAXTPN-1) As Integer End Type と定義できますが、VB.netでは構造体の中の配列部分が定義できません。 どのように書けばよろしいでしょうか? Public Structure Tpn_Index Dim IdxSu As Integer Dim idx() As Integer End Structure 上記の Dim idx() As Integer の部分です 宜しくお願いします

  • バイト配列の構造体変換について

    TCPの通信アプリケーションをて作成しています。 Recvbuff(1024) as byte と定義した変数に受信したデータを格納し以下のような構造体に格納 したいのです。 構造体A id as integer Usercode as string Username as string Filename as string このとき、共用体のような使いかたはVBではできないようなので すが、このような場合 整数なら「Recvbuff(1) * 256 + Recvbuff(0)」のように計算する。  文字列なら必要な文字のみ切り取ってGetStringで変換する。 といった方法しかないのでしょうか。 環境は VS2008 VB.NET です。

  • VB2005の構造体で配列を含む構造体へアクセスするプロパティの記述方法

    VB2005の構造体で、以下のように Dantaiという配列を含む構造体があり、 プロパティを記述する方法で困っています。 Structure Person Dim namae As String Dim toshi As Integer end Structure Structure Dantai Dim m_DantaiMei As String Dim m_Hito() As Person Public Sub New(mei As String) m_DantaiMe = mei Redim m_Hito(100) End Sub '団体名 Public Property Dantai_Mei() As String Get Return m_DantaiMei End Get Set(ByVal value As String) m_DantaiMei = value End Set End Property '人 Public Property ???  '???????????? どのようにプロパティを設定したらよいのでしょうか? '???? '???? 配列で、しかも構造体です。 '???? '???? End Property End Structure Dim dantai As New Dantai("A") MessageBox(dantai.Dantai_Mei) MessageBox(人100人を表示させたい) '?????????????????????????? あと、構造体のDimはデフォルトで、PublicでしょうかPrivateでしょうか? VB2005の構造体について、VB6との違い、クラスとの違いなど詳しく書かれている サイトなどご存じの方教えて下さい。

  • VBからVCへ渡す構造体の設定について

    VB2005からVCで作られたDLLをコールするときにエラーが出て困ってます。 関数のパラメータに構造体を指定して、構造体のメンバの文字列を渡したいけれど、なんかうまく行かないんですよね。 VB2005だと固定長文字列ってのがサポートされていないとか何とか言うのは分かったけれど、 解決方法が不明となっています。 アドバイスをお願いします。 コードはこんな感じ。 *VC2005******************************************************* typedef struct{  int iTemp;  char cTemp[256]; }tag_strTemp; void __declspec(dllexport) WINAPI TestFunction(tag_strTemp* pstrTemp) {  MessageBox(NULL, pstrTemp->cTemp, "", 0); } *VC2005******************************************************* *VB2005******************************************************* Moduel Module1  Public Structure tag_strTemp   Public iTemp as Integer   Public cTemp as String ←ここの定義に問題があるんだと思ってます。  End Structure End Module Public Class Form1  Private Sub Form1_Load(・・・)   Dim strTemp as tag_strTemp   strTemp.cTemp = "ABCDE"   TestFunction(strTemp)  End Sub End Class *VB2005*******************************************************

  • 構造体のコピー

    VB6ですが、構造体のコピーは正しくできるのでしょうか type a test1(0 to 5) as byte test2 as integer test3 as string end type dim b1 as a dim c1 as a b1.test = 2 c1 = b1 私はここで、c1.test2が0だった

  • VB6で構造体(ユーザー定義型)の比較でエラーになります。

    VB6で構造体(ユーザー定義型)の比較でエラーになります。 仕様でしょうか? type TEST_STRUC x as integer y(0 to 10) as byte end type a as TEST_STRUC b as TEST_STRUC a.x = 1 b.x = 1 if a = b then    <--- ここでエラー msgbox("同じ") end if 強引でも比較できる方法があれば知りたいです。 項目ごとに比較するしかないのでしょうか if a.x = b.x then のように、長々と記述するのが間違えそうで・・・ 簡単に比較できると、楽です。

  • VBでも構造体が使えますか?

    宜しくお願いします。 VBビギナーです。 VBでもC言語のように構造体の使い方ができますか? 宜しくお願いします。

  • 構造体配列の並べ替え

    いつもお世話になっております。 VB6で構造体の配列をソートしたいと考えています。 具体的やりかたは調べたいと思うのですが、ヒントとしてひとつ教えてほしいことがありまして質問させていただきました。 たとえば 名前(string) 身長(integer) 体重(single) 何人分かを仮にprofileという名の構造体に入れて、普通の配列と同じ様に体重だけをソートしたとします。 すると体重だけがソートされてしまうのでしょうか? それとも構造体ごとソートされてくれるのでしょうか? 前者だとかなり悩むことになりそうなので、そこだけ教えていただきたく質問させていただきました。 よろしくお願いします。

  • VB6のTYPE文をVB.NETのStructureに変えるとき

    VB6のTYPE文をVB.NETのStructureに変えるとき 下記VB6のコードをVB.NETのStructureに変える場合 Type kouzou1 i As Integer j As Integer a As String * 20 b As String * 50 End Type を下記にしてみたのですが *20,*50のところは、どのように表現するのでしょうか。 Structure kouzou1 Dim i As Integer Dim j As Integer Dim a As String * 20 <- ステートメントの終わりを示してくださいのエラーになる。 Dim b As String * 50 <- ステートメントの終わりを示してくださいのエラーになる。 End Structure お教え下さい。

  • ファイル読み込みと構造体について

    Q1 VB始めたばかりの超初心者です。クイズゲームを作成したく、構造体を用意したいのですが、同じ構造体を100個用意したい場合どのように宣言するのでしょうか? Public Type mondai_REC Question As String * 100 choice(5) As String * 30 justness(3) As Byte End Type ↑の構造体を100個用意したいのです。 また100個用意して、その中のchoice()を参照したい場合どのように使うのでしょうか? Q2 テキストファイルを読み込み、この構造体に格納したいと考えてます。ファイルをオープン・クローズドする、任意の文字(たとえば”。”)がみつかめまで読み込むなど、固定長でない文字列の入ったファイルを読み込むのに便利な関数を教えてください。 よろしくお願いいたします。

専門家に質問してみよう