[リストへもどる]   [VBレスキュー(花ちゃん)]
一括表示

投稿時間:2006/03/09(Thu) 04:15
投稿者名:deadjail
URL :
タイトル:
標準モジュールで構造体(Type)をPrivateで記述するメリットは?
はじめまして。
deadjailといいます。
困った時などよく拝見させて頂いてます。

質問させてください。

標準モジュールで宣言する構造体(Type)をPrivateで宣言することに
特別なメリットはあるのでしょうか?

例えば下の二つのコードを比べてみます。

1)
Private Type typeA
   Dim intA As Integer
   Dim strB As String
End Type

Public gTypeA As typeA

2)
Public Type typeA
   Dim intA As Integer
   Dim strB As String
End Type

Public gTypeA As typeA

2)の場合は他のプロシージャなどで一時的にgTypeAの値を
退避させたい時など、ローカルで宣言した同じ構造体の変数
に値を"="で一括代入したりできますが、もちろん1)では出来ません。

そうすると1)のメリットは他人が作ったモジュールをリンクした時
などに構造体名のバッティングが避けられるといったことくらいしか
私には浮かばないのですが、もっと根本的な仕組みでのメリットなど
あるのでしょうか?

結局名称のバッティングだけの話であれば、gTypeAというグローバルの
変数も同じ問題を抱えていると思いますので、大したメリットでは
ないように思えます。

実は私はずっと1)の手法でやってきたのですが、
明確な使用方法の切り分けや、メリットはグレーなままでした。

ぜひ教えていただければ幸いです。

投稿時間:2006/03/09(Thu) 08:11
投稿者名:いな
Eメール:
URL :
タイトル:
Re: 標準モジュールで構造体(Type)をPrivateで記述するメリットは?
> 結局名称のバッティングだけの話であれば、gTypeAというグローバルの
> 変数も同じ問題を抱えていると思いますので、大したメリットでは
> ないように思えます。

ある機能や関数をスタブにして、ドライバのみをとりあえず先に開発するとき
何でもグローバルな変数で処理していたら、
変数名のバッティング以前に機能面で競合を起こしますよね?

投稿時間:2006/03/09(Thu) 10:35
投稿者名:deadjail
URL :
タイトル:
Re^2: 標準モジュールで構造体(Type)をPrivateで記述するメリットは?
> > 結局名称のバッティングだけの話であれば、gTypeAというグローバルの
> > 変数も同じ問題を抱えていると思いますので、大したメリットでは
> > ないように思えます。
>
> ある機能や関数をスタブにして、ドライバのみをとりあえず先に開発するとき
> 何でもグローバルな変数で処理していたら、
> 変数名のバッティング以前に機能面で競合を起こしますよね?

いなさん、お返事ありがとうございます。

>何でもグローバルな変数で処理していたら、
確かに何でもかんでもって言うのはよくない事はわかります。
ただ、私の構造体の使い方としてフォームモジュールのSubから
標準モジュールのPublic関数Aに引数keyを与えると
ファイルの1レコードをゲットしてくるといった事を
実現する時によく使うので、結果を格納する変数をgTypeAという
グローバルなものにしています。

> 変数名のバッティング以前に機能面で競合を起こしますよね?
機能面でというのは具体的にどういった事例ですかね?
ある程度の取り決めでは回避できないようなものですか?

投稿時間:2006/03/10(Fri) 20:57
投稿者名:いな
Eメール:
URL :
タイトル:
Re^3: 標準モジュールで構造体(Type)をPrivateで記述するメリットは?
返信が遅くなってしまい、申し訳ない・・・。
最近夜勤で今頃出社です。

> > 変数名のバッティング以前に機能面で競合を起こしますよね?
> 機能面でというのは具体的にどういった事例ですかね?
> ある程度の取り決めでは回避できないようなものですか?

 単一の結果が〜という面では出ないかもしれませんが、
 携帯電話などのSIM(シミュレータ)でツールを作成する際、
 何万BHCAという呼量が発生するわけで、
 呼損が発生(音声発信を行っても終話出来ない)とか・・・。

投稿時間:2006/03/13(Mon) 11:46
投稿者名:deadjail
URL :
タイトル:
Re^4: 標準モジュールで構造体(Type)をPrivateで記述するメリットは?
> 返信が遅くなってしまい、申し訳ない・・・。
> 最近夜勤で今頃出社です。
>
> > > 変数名のバッティング以前に機能面で競合を起こしますよね?
> > 機能面でというのは具体的にどういった事例ですかね?
> > ある程度の取り決めでは回避できないようなものですか?
>
>  単一の結果が〜という面では出ないかもしれませんが、
>  携帯電話などのSIM(シミュレータ)でツールを作成する際、
>  何万BHCAという呼量が発生するわけで、
>  呼損が発生(音声発信を行っても終話出来ない)とか・・・。

こちらもお返事遅くなってすみません。
インフルエンザに襲われていました。というか今もですが・・。

解答拝見させていただきました。正直私はそちら方面の業務に
明るくないので、あまりイメージ湧かなかったのですが、
少なくとも私が実現したいレベルでは問題ないのだなというように
判断しました。
色々とありがとうございました。

投稿時間:2006/03/09(Thu) 09:34
投稿者名:じゃんぬねっと
Eメール:
URL :http://jeanne.wankuma.com/
タイトル:
Re: 標準モジュールで構造体(Type)をPrivateで記述するメリットは?
私の場合、標準モジュールは静的クラスのように使用します。
外部に公開する必要のない型は公開すべきではないでしょう。

VB のモジュールは「モジュール」という名称のわりに、
中途半端ながらにカプセル化の概念 (アクセス修飾子) があります。

クラス モジュールはインスタンス メンバだけ、
標準モジュールは静的なメンバ (モジュール名が省略できちゃうのが orz) だけですが...

私はオブジェクト指向プログラミングもできる言語だと思っているですけどね。

投稿時間:2006/03/09(Thu) 10:48
投稿者名:deadjail
URL :
タイトル:
Re^2: 標準モジュールで構造体(Type)をPrivateで記述するメリットは?
> 私の場合、標準モジュールは静的クラスのように使用します。
> 外部に公開する必要のない型は公開すべきではないでしょう。
>
> VB のモジュールは「モジュール」という名称のわりに、
> 中途半端ながらにカプセル化の概念 (アクセス修飾子) があります。
>
> クラス モジュールはインスタンス メンバだけ、
> 標準モジュールは静的なメンバ (モジュール名が省略できちゃうのが orz) だけですが...
>
> 私はオブジェクト指向プログラミングもできる言語だと思っているですけどね。

じゃんぬねっとさん、お返事ありがとうございます。

> 私の場合、標準モジュールは静的クラスのように使用します。
> 外部に公開する必要のない型は公開すべきではないでしょう。

つまり公開する、しないの機能的なメリット、影響うんぬんというより、
他モジュールで使用しないと分かっているものは公開しないといった
切り分けをなさっているということですね。
わかりました。ありがとうございます。