台灣最大程式設計社群網站
線上人數
119
 
會員總數:241338
討論主題:186905
歡迎您免費加入會員
討論區列表 >> VB.NET >> Class1想用Class2部分的程式碼 該如何做?
[ 變換順序 ]  
[我要回覆]
1
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
Class1想用Class2部分的程式碼 該如何做?
價值 : 50 QP  點閱數:213 回應數:6

樓主

city
初學者
30 24
634 153
發送站內信

請問一下各位前輩們:

如果Class1想用Class2部分的程式碼 (如以下範例) 該如何做?
(或說Class1想用Class2的部分Sub)

Class1可以把Class2的程式碼貼過來 可是這樣Class1就多了1500行程式碼

請問像這樣的狀況 大大們都如何處理呢?

謝謝~~


搜尋相關Tags的文章: [ Class1 ] , [ Class2 ] , [ 部分 ] , [ 程式碼 ] ,
本篇文章發表於2017-10-11 22:15
別忘捐VP感謝幫助你的人 新手會員瞧一瞧
1樓
回應

誰是誰
檢舉此回應
不是就呼叫那個 sub 就好了嗎 ? 舉個例子好了,你應該用過 MessageBox.Show() 吧? 應該常常用到, 但你不會想要把 MessageBox.Show 整個 source code 複製過來用,而是直接呼叫它不是嗎 ?
本篇文章回覆於2017-10-11 23:12
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
2樓
作者回應

city
檢舉此回應
To:誰是誰

大大說的方法是像下面這樣嗎?



如果是這個方法 我有個疑問:

Class1需要呼叫Class2
(Dim nc As New Class2)

也就是說Class1已經被Class2綁住了
Class1已經不是一個獨立的類別了
(如果沒有Class2 Class1就無法完成作業)

如果別的專案需要使用Class1 就要連Class2一起參考

我想知道說:
這樣的方法是對的嗎?
業界也是使用這樣的方法嗎?
本篇文章回覆於2017-10-11 23:34
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
3樓
最有價值解答

誰是誰
檢舉此回應
澄清幾件事情,在 C#/VB + .NET Framework 的世界裡,從來就沒有能寫得出來完全不依賴其他型別的類別。
你隨便寫個類別,就算裡面甚麼都不寫,它依然強耦於 System.Object Class。
對於型別間的相依,追求的是降低耦合度,而非完全消除耦合。
你的例子,情境其實不完全,如果今天 Class2 所在的 Library 會被我眾多的其他 Library 所使用、或是客戶端有可能直接使用這個 Library。那勢必是讓它加入到 Class1 所在的專案參考中,並且一併部署。
如果 Class2 這輩子就只被 Class1 所處的 Library 用到,那我會把 Class2 的內容整個移到 Class1 所在的專案,也就是這個專案會有 Class1 和 Class2 兩個類別。
我們隨便寫個甚麼簡單的程式,都會和 .Net Framework 的某些組件綁在一起,至少 System 這個組件是跑不掉的)。

業界怎麼做? 看開發當時的情境、看開發者的程度都會不一樣。很多事情,痛過才知道。
還有一個就是,假設 Class1 和 Class2 處在不同的組件,在某些情境下,我寫的程式碼要用到 Class1,也未必要在開發環境裡就加入參考,還是可以動態載入 Class2 所在的組件的,不過,要這樣使用又牽涉到很多觀念,又是另外一個很長很長的故事。

本篇文章回覆於2017-10-11 23:59
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
4樓
作者回應

city
檢舉此回應
To:誰是誰

一直被[降低耦合度]所束縛
(因為常常看到Class要降低耦合度)
一直覺得Class要能[獨立]的作業 XD

所謂的Library指的是Class類別庫嗎?
Class類別庫我目前還沒用過
之後會來嘗試看看

[如果今天Class2所在的Library會被我眾多的其他Library所使用、或是客戶端有可能直接使用這個Library。那勢必是讓它加入到Class1所在的專案參考中,並且一併部署。]
這句話有點不懂
意思是專案裡面有Class1 Class2 (或是專案參考Class1 Class2)
然後建置成exe的意思嗎?


(以上大大不用回也沒關係)


我是知道用繼承也能解決這個問題
只是兩個Class不一定有關連 如果沒有關聯的話用繼承會變成濫用繼承
而且用繼承的方法會繼承到一堆垃圾內容

除了2樓的方法 以及繼承以外 還有其它的方法嗎?
(這邊大大不用回答也沒關係 我只是想知道是否還有其它方法)
(如果有其它的方法比這兩個方法好 我願意聽大大的解說)


其實我想知道的是:
1.二樓的方法是正確的嗎?
(就是:Class1可以呼叫Class2嗎?)
(也就是說:Class1的寫法是正確的嗎?)

2.如果業界碰到這樣的問題 也是使用二樓的方法來解決嗎?
(還是說是用其它的方法?)

其實我想知道的是這兩點




另外:(跟主題沒關)

大大在一樓有提到:MessageBox.Show的source code
我想到了另外一個問題:
有辦法看到Button或Form的原始碼(source code)嗎?
微軟有開放給人看嗎?



以上:
比較想知道的是那兩點 其它的如果大大沒有時間不回也沒關係..
(是怕會浪費大大的時間 但如果大大願意分享 非常願意洗耳恭聽...^^)
本篇文章回覆於2017-10-12 00:58
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
5樓
回應

誰是誰
檢舉此回應
1. 算是正確的
2. 方法很多種,要依賴整個情境的判斷

本篇文章回覆於2017-10-12 01:25
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
6樓
作者回應

city
檢舉此回應
To:誰是誰

感謝大大的說明 :)
本篇文章回覆於2017-10-12 11:35
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
[ 變換順序 ]   
1

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