JAVA字符謎題12:URL的愚弄

字號(hào):

本謎題利用了Java編程語(yǔ)言中一個(gè)很少被人了解的特性。請(qǐng)考慮下面的程序?qū)?huì)做些什么?
    public class BrowserTest {
     public static void main(String[] args) {
     System.out.print("iexplore:");
     http://www.google.com;
     System.out.println(":maximize");
     }
    }
    這是一個(gè)有點(diǎn)詭異的問(wèn)題。該程序?qū)⒉粫?huì)做任何特殊的事情,而是直接打印iexplore::maximize。在程序中間出現(xiàn)的URL是一個(gè)語(yǔ)句標(biāo)號(hào)(statement label)[JLS 14.7]后面跟著一行行尾注釋(end-of-line comment)[JLS 3.7]。在Java中很少需要標(biāo)號(hào),這多虧了Java沒(méi)有g(shù)oto語(yǔ)句。在本謎題中所引用的“Java編程語(yǔ)言中很少被人了解的特性”實(shí)際上就是你可以在任何語(yǔ)句前面放置標(biāo)號(hào)。這個(gè)程序標(biāo)注了一個(gè)表達(dá)式語(yǔ)句,它是合法的,但是卻沒(méi)什么用處。
    它的價(jià)值所在,就是提醒你,如果你真的想要使用標(biāo)號(hào),那么應(yīng)該用一種更合理的方式來(lái)格式化程序:
    public class BrowserTest {
     public static void main(String[] args) {
     System.out.print("iexplore:");
     http: //www.google.com;
     System.out.println(":maximize");
     }
    }
    這就是說(shuō),我們沒(méi)有任何可能的理由去使用與程序沒(méi)有任何關(guān)系的標(biāo)號(hào)和注釋。
    本謎題的教訓(xùn)是:令人誤解的注釋和無(wú)關(guān)的代碼會(huì)引起混亂。要仔細(xì)地寫注釋,并讓它們跟上時(shí)代;要切除那些已遭廢棄的代碼。還有就是如果某些東西看起來(lái)過(guò)于奇怪,以至于不像對(duì)的,那么它極有可能就是錯(cuò)的。