台灣最大程式設計社群網站
線上人數
1299
 
會員總數:244221
討論主題:188566
歡迎您免費加入會員
討論區列表 >> VB.NET >> 命名空間及類別庫的問題
[]  
[我要回覆]
1
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
命名空間及類別庫的問題
價值 : 150 QP  點閱數:333 回應數:10

樓主

city
初學者
130 40
1361 222
發送站內信

各位前輩們新年好:

請問一下
假設:

[一]

Class清冰(Base) 衍伸出Class芒果冰 (Class芒果冰繼承Class清冰)
Class清冰(Base) 衍伸出Class草莓冰 (Class草莓冰繼承Class清冰)

Form1.Button1.Click方法中會使用Class芒果冰/Class草莓冰 其中一種
Form1.Button1.Click方法不會直接使用Class清冰

如果要將Class清冰 Class芒果冰 Class草莓冰 寫成類別庫(.dll)

各位會如何寫呢?

1.Class清冰 Class芒果冰 Class草莓冰 寫成一個類別庫?
2.Class清冰寫成一個類別庫 Class芒果冰寫成一個類別庫 Class草莓冰寫成一個類別庫?
3.其它?

===========================================================================
[二]

再舉一例:

Class汽車 使用了Class引擎 Class車殼 Class輪胎

Form1.Button1.Click方法會使用Class汽車

Form1.Button1.Click方法不會直接使用Class引擎 Class車殼 Class輪胎

像這樣的話
如果要將Class汽車 Class引擎 Class車殼 Class輪胎 寫成類別庫(.dll)
各位會如何寫呢?

1.Class汽車 Class引擎 Class車殼 Class輪胎 寫成一個類別庫?
2.Class汽車寫成一個類別庫 Class引擎寫成一個類別庫 Class車殼寫成一個類別庫 Class輪胎寫成一個類別庫?
3.其它?

===========================================================================
[三]

類別庫(.dll)如果越來越多

各位都是如何管理分類命名空間及類別庫呢?

個人目前是:
Utility命名空間
底下分成:
Form類別
Button類別
TextBox類別
...
...

可是有些自訂類別
又不知道該怎麼分

各位在分類命名空間及類別庫有什麼規則或是習慣嗎?

謝謝~~

搜尋相關Tags的文章: [ 命名空間 ] , [ 類別庫 ] ,
本篇文章發表於2019-02-04 20:01
別忘捐VP感謝幫助你的人 新手會員瞧一瞧
1樓
回應

P陳
檢舉此回應

類別庫重點是在【重覆】,每個 FORM 會用到 某些Class 的某些部份,
你太鑽了。
每一個CLASS 都會有很多方法(功能)。
建議將相類似功能的集合在一起,一次引用即可。管他是 FORM1 還是 FORM2 要用。

您以 Form類別 Button類別 TextBox類別 是較不好的分法。
本篇文章回覆於2019-02-05 08:56
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
2樓
作者回應

city
檢舉此回應
To:P陳

我原本作法是在專案內加入類別(.vb)

這個做法不用考慮到命名空間
(命名空間=專案名稱)

以案例一來說:

我的專案加入Class清冰.vb
然後再加入Class芒果冰.vb 或是Class草莓冰.vb (二選一)

也就是我需要什麼類別 就加入什麼類別

可是我現在嘗試把類別(.vb)寫成類別庫(.dll)
發現要面對一個問題:
Class清冰 Class芒果冰 Class草莓冰 要不要寫成一個類別庫?(寫成一個.dll檔案)
還是我要寫成3個類別庫?(3個.dll檔案)

寫成一個類別庫 感覺又像是寫死了??

======================================================================

還有如果專案加入自訂參考(.dll)

感覺方案總管裡面的參考會蠻亂的
(因為有系統內建的參考)
(參考也無法新增資料夾來管理自訂參考)

大大會將自訂.dll前面加上特定的命名空間嗎?
比如:Custom命名空間或是Utility命名空間

以大大之前有提過的類別庫名稱來舉例 變成:

Custom.DBIO
Custom.計算
Custom.加解密

會這樣嗎?

還是直接:
DBIO
計算
加解密

另外:DBIO/計算/加解密
是:命名空間? 類別名稱? 類別庫檔案名稱(.dll)?

謝謝~~
本篇文章回覆於2019-02-06 00:38
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
3樓
最有價值解答

P陳
檢舉此回應
DBIO/計算/加解密 <--- 這是類別庫的功能分類
所謂的 【庫】 當然不會只有一個 方法

以微軟而言 Imports System.Windows.Forms <--類別庫
再包 Label Textbox 等等

工具箱也是一個類別庫 含 通用 容器 功能表 資料......

否則以您的寫法,每個FORM 一開始就要一個個引用一堆類別 太不經濟了
請以功能分類
本篇文章回覆於2019-02-06 08:23
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
4樓
作者回應

city
檢舉此回應
To:P陳

過年比較晚回...sorry...

看了一下System.Windows.Forms
似乎是一個.dll檔案
裡面包含了Form類別 Button類別 TextBox類別 ...
也包含了介面 類別 結構 列舉 委派 命名空間

這樣的類別庫(.dll) 寫起來還真龐大
又無法像Partial Class那樣 寫在不同的檔案(.vb)

============================================

參考裡面只要加上System.Windows.Forms
就可以使用Form Button TextBox ...

而不是參考裡面加上:
System.Windows.Forms.Form
System.Windows.Forms.Button
System.Windows.Forms.TextBox
...
...

這樣好像算是將多個類別寫進System.Windows.Forms.dll的優點

任何寫法 好像都有優缺點
將多個類別全寫入System.Windows.Forms.dll 優點是好呼叫 缺點是檔案內容太龐大 不好管理

============================================

想問大大:

1.大大是否會:能寫成類別庫(.dll)就盡量寫成類別庫 而少寫成類別(.vb) ?

2.少量的類別 類別內少量的程式碼 大大會寫成類別庫嗎?
(假設只有3個類別 每個類別只有10行程式碼 這樣大大會寫成類別庫嗎?)

3.根命名空間 大大會設定很多層嗎? 像:System.Windows.Forms那樣?
還是只會設定一兩層? 像:Utility那樣?

謝謝~~
本篇文章回覆於2019-02-07 22:15
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
5樓
回應

P陳
檢舉此回應
類別庫的觀念、作法 都不太一定
自己的類別庫一定會越來越大

而目前.net 的類別庫已經很全了,其實也不會作的太大
-----------------------------------------------

1.大大是否會:能寫成類別庫(.dll)就盡量寫成類別庫 而少寫成類別(.vb) ? <--- 類別庫是類別的集合 .dll 是 .VB 的集合體 (不清楚您的問題)
2 3 <--- 很多作法都不太一定
2. 我dll 中的VB 都只有十數行而己(大部份都是再引用(重組) .net 的類別庫而已)
--------------------------------

別再鑽了,........... 開始寫就對了
本篇文章回覆於2019-02-08 11:07
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
6樓
作者回應

city
檢舉此回應
To:P陳

感謝大大的說明


假設專案一裡面有:
ClassBase
以及繼承ClassBase的ClassA

寫專案二時 發現ClassA並不完全符合本專案使用
於是寫了ClassB 繼承ClassBase
於是專案二裡面有:
ClassBase
ClassB

後來寫專案三
使用ClassBase+ClassA
可是還需要增加一些功能
於是新寫一個ClassA_A 繼承ClassA
於是專案三裡面有:
ClassBase
ClassA
ClassA_A

=================================================

以上是寫在專案裡的類別(.vb)

優點是容易抽換
當發現ClassA不合使用時 就換成ClassB
當發現ClassA不夠用時 新增一個ClassA_A繼承ClassA

=================================================

假設以上這些類別與[密碼設定]有關
於是將這些類別包在一起 包成一個類別庫(Password.dll)

類別庫裡面有:
ClassBase
ClassA
ClassA_A
ClassB

=================================================

過一陣子 寫了專案四
發現ClassBase ClassA ClassB ClassA_A不完全適合本專案使用

於是重新寫了:
ClassBase_A
還有繼承ClassBase_A的ClassC

如果這些類別與[密碼設定]有關
就加入類別庫(Password.dll)

於是類別庫裡面有:
ClassBase
ClassBase_A
ClassA
ClassA_A
ClassB
ClassC

於是類別庫就越來越大

不知道這是否大大所說:[自己的類別庫一定會越來越大]的情形?

=================================================

以上 寫一個資料庫(Password.dll)來供任何的專案使用

而非每個專案都使用自己的類別(.vb)

例如:
專案一使用:
ClassBase+ClassA

專案二使用:
ClassBase+ClassB

專案三使用:
ClassBase+ClassA+ClassA_A

專案四使用:
ClassBase_A+ClassC

這就是我所提問:
是否能寫成類別庫(.dll)就盡量寫成類別庫 而少寫成類別(.vb) ?

也就是大大是否會寫個類別庫(.dll)供任何專案使用
而避免每個專案都使用自己的類別(.vb)

謝謝~~

=================================================

PS.
有時寫的多就錯的多 錯的多就改的多
一直低頭寫 寫得很爽 可是後來發現瞎忙一場
還是要多聽聽前輩們給的意見 哈..
本篇文章回覆於2019-02-08 12:43
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
7樓
回應

P陳
檢舉此回應
例如: <--- 我會將這四個 【方法、功能】寫在同一個【類別庫】中,然後進入點會只有一個
專案一使用:
ClassBase+ClassA

專案二使用:
ClassBase+ClassB

專案三使用:
ClassBase+ClassA+ClassA_A

專案四使用:
ClassBase_A+ClassC
-----------------------------
我之前的寫法就是這樣,發現這樣會搞死自已。根本沒辦法改。

後來經過了一番整合,將所有的功能合併。
寫了類似程式產生器的東東。都是設參數然後呼叫。還在作不過快完成了。

您有準備走軟體開發這條路嗎?不輕鬆哦。
-----------------------------
然後你講的 類別 可能是我認知的模組

本篇文章回覆於2019-02-09 06:58
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
8樓
作者回應

city
檢舉此回應
To:P陳

目前先來嘗試將多個類別寫入一個類別庫
看之後會不會有什麼新的問題

=======================================

目前寫類別
很常遇到類別內只有靜態欄位/屬性/方法/建構式
也就是類別根本不需要變成物件就能使用

不知道是所寫的類別特性就是如此
還是我寫類別的方式錯誤
對物件導向寫法還不是完全了解 還在嘗試中...

所以也不知道是否是大大所說的模組(Module)
個人目前是沒在用Module
畢竟C#也沒有Module

=======================================

寫程式目前只是興趣...

感謝大大的說明喔~~ :)
本篇文章回覆於2019-02-09 12:19
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
9樓
回應

誰是誰
檢舉此回應
整串看下來,感想是樓主想太多,現階段樓主恐怕連為什麼要設計自訂類別、自訂類別該怎麼設計都還一頭霧水,就想飛到類別庫。
真的想太太多,要先能爬,然後走,接著跑,學會跳,才有可能會飛啊。
本篇文章回覆於2019-02-14 16:37
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
10樓
作者回應

city
檢舉此回應
To:誰是誰

大大說的極是

目前的確不敢說完全瞭解物件導向
也不敢說完全會寫自訂類別

目前也的確是在嘗試各種寫法

=============================================
程式碼這東西很怪
明明是跟電腦溝通的 電腦看的懂 不會出錯就好

不過若是要給人看 好管理
就變得有優劣之分了

尤其跟物件導向沾上邊
彷彿就不是電腦的問題了 而是宗教的問題:是否開悟了?
沒搞懂物件導向 就像是沒開悟一般...

=============================================
寫成類別(.vb) 還是寫成類別庫(.dll)

個人是覺得..那只不過是把程式碼搬來搬去而已..
不同專案可共用就寫類別庫(.dll) 專案量身訂做就寫成類別(.vb)

這只是目前個人的想法...

=============================================
目前先來玩玩C語言

覺得VB.NET 微軟做的太多了
導致很多東西都認為理所當然

來玩玩C 看哪裡有跟VB.NET不一樣的..
順便看看電腦比較基本的東西..

不過也只是玩玩
因為C只有Dos畫面

哈哈..
本篇文章回覆於2019-02-15 23:34
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
   
1

回覆
如要回應,請先登入.