定数定義を効率よく行うには!?

解決


gari  2006-06-24 01:16:07  No: 95830

いつもお世話になっております。

VB.NETにてオブジェクト指向を駆使してプログラミングする際の定数定義を効率よく行いたいのですが、どのようにするのが常套手段なのでしょうか!?

ある、定数定義群(いわゆるConst系)を、
Public Const CONST_TYPE1& = 0
Public Const CONST_TYPE2& = 1

を作って継承(実装)させたく、またこの定数定義群は2つ以上のクラスで使いまわしたいのです。

Javaだとインターフェイスに定数定義群を作ることができるので、Implementsすればさほど問題ない(インターフェイスは複数実装可能)のですが…

そこで、色々考えていたのですが、
1…定数定義群をクラス化し、一度定数定義を継承したクラスを作成後使用。
2…定数定義群をdll化し、参照設定を用いる。
3…その他

目的やプロジェクトの規模によっても変わるのでしょうが、上記の良し悪し、また、この方法がよいとかあれば御教授いただきたいのですが…


特攻隊長まるるう  2006-06-24 02:46:34  No: 95831

Public で定義されているし、定義しただけで名前空間さえ指定すれば
どこでも使えると思いますが。。。何か都合が悪いのですか?
数値型なら列挙型(Enum)にまとめてみるとか?
[VB.NET2003]
'/// Form1.vb
Public Class Form1
    Inherits System.Windows.Forms.Form

[省略]" Windows フォーム デザイナで生成されたコード "

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        MessageBox.Show(Class1.CONST_TYPE1)
        MessageBox.Show(Const_Type.CONST_TYPE1)

        Dim cls1 As New Class1
        Call cls1.MsgboxShow()

        Dim cls2 As New Class2
        Call cls2.MsgboxShow()
    End Sub
End Class

'/// Class1.vb
Public Enum Const_Type As Long
    CONST_TYPE1 = 2
    CONST_TYPE2 = 4
    CONST_TYPE3 = 6
End Enum

Public Class Class1
    Public Const CONST_TYPE1& = 3
    Public Const CONST_TYPE2& = 5
    Public Const CONST_TYPE3& = 7
    Public Sub MsgboxShow()
        MessageBox.Show(Me.CONST_TYPE2)
        MessageBox.Show(Const_Type.CONST_TYPE2)
    End Sub
End Class

Public Class Class2
    Public Sub MsgboxShow()
        MessageBox.Show(Class1.CONST_TYPE3)
        MessageBox.Show(Const_Type.CONST_TYPE3)
    End Sub
End Class


gari  2006-06-24 03:18:07  No: 95832

>特攻隊長まるるう様

御意見ありがとうございます。
わざわざコードまで提示してくださり恐縮です。

2つ以上のクラスと書いたのがよくなかったです。すみません。
正確には2つ以上のプロジェクト間で使いまわしたいのです。
(ここでいうプロジェクトとは、.vbproj(.sln)単位という意味です)

で、プロジェクト1つに対してクラスは基本的にはフォームクラスしか持ちません。

フォームの基本クラス(親)も独自に設計しており、それを継承して使います。


gari  2006-06-24 03:36:34  No: 95833

すみません。途中で切れてしまいました。

よくよく考えたのですが、dll化して親フォームで吸収するのが一番分かりやすいのかなと思ったのですが…

もっとよい方法ってあるのでしょうか!?
というよりは、一番スタンダードな方法って何なのかを知りたいのですが、そもそもスタンダードって何と言われると返す言葉がないので、この辺は設計の問題なのですかね。

ただ、他の人はどうやってるのかな(というより、おぉこの方法いいなあ)というのが知りたかったのです。本音は。


特攻隊長まるるう  2006-06-26 20:50:46  No: 95834

>プロジェクト1つに対してクラスは基本的にはフォームクラスしか持ちません。
そんな作りにしたこと無いので、どういう意図があるのか分かりません。
>もっとよい方法ってあるのでしょうか!?
意図や目的が分からない以上、何が良い方法なのか判断できません。

>2…定数定義群をdll化し、参照設定を用いる。
>よくよく考えたのですが、dll化して親フォームで吸収するのが
……ファイル参照しているんですか?
ボクの場合、『プロジェクト間参照』を使ってます。
http://msdn.microsoft.com/library/ja/vbcon/html/vbtskAddingRemovingReferences.asp

>一番スタンダードな方法って何なのかを知りたいのですが
ヘルプにチュートリアルなどがたくさんあります。いまいちなコードも
多いですが、概念は推奨されるものが使われていると思います。


ささ  2006-06-26 21:58:26  No: 95835

>プロジェクト1つに対してクラスは基本的にはフォームクラスしか持ちません。

ちょっと待って・・・。
定数定義を見直す前に、この仕様?をまず見直したらいかが?

この時点で随分、非効率に思えますが、素人判断かなぁ〜。


gari  2006-06-28 22:00:23  No: 95836

特攻隊長まるるう様、ささ様
御意見ありがとうございます。

お二方ともおっしゃられていますが、意図が分からないですね。
確かにこれだけでは分からないです。

ただ、これだけで分からないということはやはり設計の問題だと思いました。

やり方はいくらでもあるけど、どれを選択するかは設計に対する効率のよい方法の模索なんだと思います。

いろいろありがとうございました。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加