JAVA字符謎題12:URL的愚弄

字號:

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