2009-08-14 88 views
0

我是新來的Visual Basic開發,但有大量的在C#/ C/C++/JAVA/Haskell和其他幾個人的經歷。的Visual Basic打字和鑄造問題

是有一些原因,我維護的代碼並找到代碼示例,其中的類型聲明似乎只是懶惰?我已經看到無數的字符串,它們只是作爲字符串類型使用,被聲明爲對象。在VB.NET的面向對象特性推出之前,這是否有必要確保方法可以採用多種類型?爲什麼有人會這樣做?

回答

1

一些VB6的專家,比如 「the Mandelbrot Set」,使用Variants所有變量建議。你可以稱它早鴨打字?!這頗具爭議 - 我們許多人認爲這是一場災難。

但是這裏必須有很多這樣的代碼。在modern conversion tools出現之前,將其升級到VB.NET將是very hard。 Visual Studio升級工具每次看到Variant時都會發生混亂。如果你確實需要使用有限的資源進行升級,那麼我認爲將所有變體更改爲Object可能是最不好的選擇。顯然,由此產生的代碼會很糟糕。

您可以逐漸重構。在處理代碼區域時,可以將聲明更改爲更具體的類型。

+0

那麼你打算如何調試這種變體:在運行時等待一些錯誤,並希望有一個有用的錯誤?這種編碼方式真的有用嗎? 雖然很好的答案。 – user142350 2009-08-17 14:21:22

+0

嗯,我總是避免像瘟疫這樣的方法,所以我想我不知道它是否真的有效!但如果它確實有效,我會感到很驚訝。 – MarkJ 2009-08-17 14:45:33

5

有人猜測......惰性和舊的VB6習慣正在推進。

+0

所以這是如此方法可以採取多個成員,是否正確?而不是重載函數,你會創建一個方法來接受任何一個方法,然後對此做些什麼? – user142350 2009-08-14 15:05:26

+0

關閉,但最有可能的是,他們不必指定實際的數據類型。讓一個方法獲取參數的變量列表不同於接受任何類型參數的方法。這聽起來像你所擁有的是「任何類型的一個參數」場景,這相當於在VB6中使用Variant。 – 2009-08-14 15:47:31

3

在VB6有可能會採取不同類型的變量類型,它是爲了謹慎和小心使用。當.Net出來時,唯一的轉換(除了更改你的代碼之外)將會使用對象作爲類型。

如果代碼顯示爲您採取多種方法描述需要這種靈活性,我肯定把它從VB6宿醉效應或代碼的轉換效果。

但是,如果你看到了被宣佈爲對象的字符串類型的代碼,這是遠遠不只是懶惰和從VB6宿醉更糟糕!這聽起來像可怕的糟糕設計和缺乏照顧。