アプリ版:「スタンプのみでお礼する」機能のリリースについて

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

A 回答 (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 では「ユーザー定義型」と表現してます。
私見でした。
    • good
    • 0
この回答へのお礼

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

お礼日時:2008/01/20 21:31

マイクロソフトが推奨している命名規則に関する質問であれば、それで宜しいと思います。


が、私は、

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
    • good
    • 0
この回答へのお礼

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

お礼日時:2007/03/03 00:22

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!