台灣最大程式設計社群網站
線上人數
1140
 
會員總數:240681
討論主題:186538
歡迎您免費加入會員
討論區列表 >> VB.NET >> 簡單的共用副程式該放在哪裡?
[ 變換順序 ]  
[我要回覆]
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
簡單的共用副程式該放在哪裡?
價值 : 40 QP  點閱數:433 回應數:29

樓主

city
門外漢
0 10
206 29
發送站內信

請問各位前輩們:

Form1 Form2 Class1 都用的到的簡單Sub或Function 大家都放哪呢?

例如:








像這些共用的簡單Sub或副程式 大家都放哪呢?
模組?
Class?

我目前是放模組
一個模組只放一個sub 一個模組只處理一件事
就像是:
模組 新增資料夾
模組 標題
...
...

之後想把模組改成Class 變成:
Class 新增資料夾
Class 標題
...
...


大家都是怎麼做呢?
可以說說嗎? 參考一下
謝謝~~

搜尋相關Tags的文章: [ 簡單 ] , [ 共用 ] , [ 副程式 ] , [ 函式 ] , [ Sub ] , [ Function ] , [ 哪裡 ] ,
本篇文章發表於2017-09-06 12:54
別忘捐VP感謝幫助你的人 新手會員瞧一瞧
1樓
不錯的參考

小魚
檢舉此回應
如果是function可以把所有要用到的function放在同一個資料夾,
模組我沒用過,好像是VB才有的。
本篇文章回覆於2017-09-06 19:06
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
2樓
最有價值解答

羅伯斯
檢舉此回應
原則上放在一個新建的共用Class內,當然要放在Model內也是可以的
本篇文章回覆於2017-09-06 23:32
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
3樓
作者回應

city
檢舉此回應
To:小魚

我只會VB.NET ...

突然發現很多個共用Sub或Function 用Class好像有點麻煩...

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click

Dim nc1 As New Class除錯
nc1.某某

Dim nc2 As New Class新增資料夾
nc2.某某

Dim nc3 As New Class新增檔案
nc3.某某

Dim nc4 As New Class檔案存入陣列
nc4.某某

Dim nc5 As New Class陣列存入RichTextBox
nc5.某某

...
...
...
...

End Sub

程式裡面一大堆Dim nc As New Class .....
本篇文章回覆於2017-09-06 23:37
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
4樓
作者回應

city
檢舉此回應
To:羅伯斯

如果有十幾個Sub或Function
全部放在同一個Class嗎?

這些Sub彼此都沒有什麼關係
比方說:
Sub 新增資料夾
Sub 標題
Sub 除錯
Sub 計時器
Sub 載入Excel檔案
...
...
...
這些Sub都放進同一個Class?


放在Class裡面
需要把這些Sub或Function 設定成Shared嗎?
本篇文章回覆於2017-09-06 23:46
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
5樓
回應

羅伯斯
檢舉此回應
只要是共用的Sub或Function,就全只放一個Class
然後在宣告區建立一個新的公用類別物件變數
透過該公用類別物件變數,來呼叫欲使用的Sub或Function

例如:
有一個名ABC_PublicClass的公用Class,先在宣告區宣告
Mid ABC As New ABC_PublicClass
然後呼叫時,如下
ABC.Sub或Function的名稱

宣告時不一定要以Public宣告
本篇文章回覆於2017-09-07 00:19
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
6樓
不錯的參考

P陳
檢舉此回應
sub function
放在 Class 或 Module 皆可

重點是變數
全專案共用的就放在 module
各自獨立的變數就放在 Class



本篇文章回覆於2017-09-07 01:06
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
7樓
回應

P陳
檢舉此回應
看起來您還缺很多東東
建議您去上個基本的課補起來 (如巨匠 聯成等等 或 在這找位家教)

這樣我們的回答,您也較能吸收
本篇文章回覆於2017-09-07 01:10
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
8樓
作者回應

city
檢舉此回應
To:羅伯斯

請問大大說的是像這樣嗎?




如果共用的Sub或Function很多
比方說有幾十個幾百個Sub 都塞在一個Class共用
這樣不會很難管理嗎?

其實我之前是把全部共用的Sub及Function都丟到一個模組
後來覺得程式碼太多了 很難找的到
就拆開來 一個Sub丟一個模組
結果這樣會有另外一個問題:方案總管理的檔案太多了 哈哈

這種問題好像很難避免?

我先依照大大教的方法來試試看...
本篇文章回覆於2017-09-07 14:20
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
9樓
作者回應

city
檢舉此回應
To:P陳

我之前有上過巨匠 巨匠教得很淺 跟自己看書差不多...

我的共用變數有照著大大說的放在模組 用屬性來讀取 像這樣:





只是現在在想共用的Sub要放在哪?
放在模組還是Class ?
是要全部的共用Sub都放在同一個模組(或Class) 還是要拆開來放在不同的模組(或Class) ?

放在一個模組(或Class)好處是比較好呼叫
(只要一個Dim nc As New Class共用)
可是這個模組(或Class)裡面會有很多的Sub 程式碼會很長

如果拆開來放在不同的模組(或Class)
好處是每個模組(或Class) 裡面只有一個Sub 很好修改
缺點是方案總管裡面的檔案數量會很多...
如果是放Class
呼叫起來會有很多的:
Dim nc1 As New Class某某1
Dim nc2 As New Class某某2
Dim nc3 As New Class某某3
...
...

我不知道是不是我想太多了..哈哈

不知道P陳大大的做法是什麼??
本篇文章回覆於2017-09-07 14:54
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
10樓
回應

羅伯斯
檢舉此回應
如果你的Sub或Function多達上百個以上
可以依據Sub或Function的用途性質,分別放在不同的Class
然後在為Class命名時,取用較有意義名稱
日後維護時,就可從Class的名稱
來區別該Class中的Sub或Function的用途
如此不會於日後維護時,不知到那找Sub或Function
本篇文章回覆於2017-09-07 18:44
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
11樓
回應

羅伯斯
檢舉此回應
模組與類別的差別,有以下幾點:
1. 在於每個模組都只可有一個執行個體,且不需要建立或指派給變數。
2. 模組不支援繼承 (Inheritance) 或實作介面。
3. 不可在另一個模組內或任何型別內巢狀化模組。
4. 模組它的成員都是 Shared,所以它們的存留期也等於程式的存留期。


以物件導向程式設計(OOP)的精神而言,模組並不符合
若你想學習物件導向程式設計,建議你養成以類別來取代模組的習慣
對日後學習其他程式語言時,會較容易理解

本篇文章回覆於2017-09-07 23:24
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
12樓
作者回應

city
檢舉此回應
To:羅伯斯

共用Sub數量沒到數百個 大概只有10-20個 哈

網路上的前輩們有些會把共用變數寫在模組 有些會寫在Class
有些會把共用Sub寫在模組 有些會寫在Class
有點混亂...

有照著大大教的方法 把共用Sub寫成一個Class
感覺跟寫在一個模組差不多
只是Class需要宣告Dim nc As New Class共用
還有要呼叫Class裡面的Sub 要變成nc.某某
感覺模組比較簡單清爽

不過為了物件導向精神 還是寫在Class ?
(物件導向精神我還體會不出來 現在寫得好像都比較像是程序導向)
(不過網路上好像蠻多人說盡量用Class 少用模組?)

那如果像大大所說的
共用變數也是寫在Class裡面嗎?
共用變數寫在Class變數 共用Sub寫在Class共用Sub?
還是共用變數跟共用Sub寫在同一個Class?

我試了一下共用變數寫在Class
好像要加上Shared才能夠被不同的Form存取?





上面是我測試把共用變數寫在Class共用變數裡面
Form1 Form2 Class1去存取Class共用變數

不知道這個寫法跟大大所說的方法有沒有相同?
本篇文章回覆於2017-09-08 00:33
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
13樓
作者回應

city
檢舉此回應
還有個疑問

既然是"共用"的變數或Sub或Function

照理說本來就是開放讓人存取的
不怕被使用者"偷看""破壞"
(應該是物件導向說的資訊隱藏 封裝?)

那為什麼不直接寫在模組
這樣呼叫起來比較乾脆 程式碼也比較精簡?

(只是個人的小小疑問...)
本篇文章回覆於2017-09-08 00:40
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
14樓
回應

小魚
檢舉此回應
物件導向不是用來做這個的,
你目前說的都只是函式而已。
本篇文章回覆於2017-09-08 01:21
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
15樓
作者回應

city
檢舉此回應
To:小魚

是阿,還沒到物件導向的領域

這些只是把重複的程式碼拉出來做成的Sub及Function

就只是很單純的疑問 該把這些共用的變數及函式放在哪而已...
本篇文章回覆於2017-09-08 09:56
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
[ 變換順序 ]   

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