以 VB.NET 為例,
注意兩個(gè)選項(xiàng): Option Explicit 和 Option Strict
前者表示,每個(gè)變量要先聲明才能使用。
后者,則對(duì)隱式類型轉(zhuǎn)換有一定的要求。
另外,在項(xiàng)目屬性頁(yè)里的 Warning Configuration 下,還有一個(gè) "Implicit Conversion" 選項(xiàng)。
默認(rèn)情況下,這些選項(xiàng)設(shè)置的比較寬松。這樣帶來(lái)的惡果是,很多 VB 程序員可以說(shuō)毫無(wú)數(shù)據(jù)類型的概念,代碼里胡亂寫(xiě),這樣把很多明明是編譯期可以解決的 bug, 帶到了運(yùn)行期。不得不說(shuō),這是不可饒恕的。
在這種寬松的設(shè)定下,我見(jiàn)到了太多應(yīng)該被拖出去重重的打屁股的代碼:
If (System.Convert.ToString(dr("Column1")) = 0)
這里很荒謬的把一個(gè) String 直接和 Integer 類型進(jìn)行比較。。。
Session("cID") = CInt(lblSomeID.Text + 1)
這個(gè)代碼更是地雷中的地雷。類型的概念極其混亂,胡亂轉(zhuǎn)換,毫無(wú)章法。
我想要說(shuō)的是,VB經(jīng)過(guò)多年的發(fā)展,到現(xiàn)在的 VB9, 10, 已經(jīng)是一門(mén)非常強(qiáng)大的語(yǔ)言。從語(yǔ)言的角度上講,也許 VB 對(duì)程序員比較寬容。但程序員不應(yīng)該把這個(gè)當(dāng)成一種福利,而放松對(duì)自己的要求,類型概念不搞清楚就亂寫(xiě)代碼,否則被罵終究是難免的。