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