<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    七段

    無論怎樣,請讓我先感謝一下國家。

    BlogJava 首頁 新隨筆 聯系 聚合 管理
      35 Posts :: 2 Stories :: 7 Comments :: 0 Trackbacks
    Less Code == [Less Bugs,Better Readability,Less programmers to hire, Less organizational communication costs, Less maitain cost]
    Less Code != [Higher Productivity,Better Performance]
    1, import static
    remove duplicated namespace
    what does it do?
    package com.toolbox.lang;
    public class ClassWithStaticMember {
      public static final String name="value";
      public static String say() {
        return "111";
      }
      public static String say(String msg) {
        return msg;
      }
    }
    package com.toolbox.lang;
    import static com.toolbox.lang.ClassWithStaticMember.say;
    import static com.toolbox.lang.ClassWithStaticMember.name;
    public class Test {
      public static void main(String[] args) {
        System.out.println(say());
        System.out.println(say(name));
      }
    }
    

    import同名的member
    意味著不同方法簽名的member都會import, e.g. say() and say(String msg)
    const #45 = Method      #46.#48;        //  com/toolbox/lang/ClassWithStaticMember.say:()Ljava/lang/String;
    const #46 = class       #47;    //  com/toolbox/lang/ClassWithStaticMember
    const #47 = Asciz       com/toolbox/lang/ClassWithStaticMember;
    const #48 = NameAndType #49:#38;//  say:()Ljava/lang/String;
    const #49 = Asciz       say;
    const #62 = Method      #46.#63;        //  com/toolbox/lang/ClassWithStaticMember.say:(Ljava/lang/String;)Ljava/lang/String;
    const #63 = NameAndType #49:#64;//  say:(Ljava/lang/String;)Ljava/lang/String;

    copy primitive type value
    意味著編譯后,Test class中static import的String, int 等是值的寫入class中,不會在去引用ClassWithStaticMember
       43:  ldc     #55; //String value
       45:  invokestatic    #57; //Method com/toolbox/lang/ClassWithStaticMember.say:(Ljava/lang/String;)Ljava/lang/String;
       48:  invokevirtual   #50; //Method java/io/PrintStream.println:(Ljava/lang/String;)V

    when to use it?
    Do it when frequent access to static members from one or two classes
    Not Do it when has naming conflict or complicated class body, otherwise, make you confuse with so many polluting namespace

    2, apply lanuage feature
    2.1 String contact
    String s = "a" + "b";
    compile into:
    const #15 = Asciz       ([Ljava/lang/String;)V;
    const #16 = String      #17;    //  ab
    if String constance + String constance
    直接編譯成結果寫入class
    else
    使用StringBuilder.append
    So always use "+" unless you need to use StringBuffer or other specific class
    3, inner class {{}}
      List<String> list = new ArrayList<String>() {{add("data1");add("data2");}};
    4, use PMD to find and remove duplicated code

    已有 0 人發表留言,猛擊->>這里<<-參與討論


    JavaEye推薦




    文章來源:http://sevenduan.javaeye.com/blog/504911
    posted on 2009-10-31 14:49 sevenduan 閱讀(307) 評論(0)  編輯  收藏

    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: 亚洲国产一成人久久精品| 国产美女无遮挡免费视频网站 | 久久久婷婷五月亚洲97号色| 巨胸喷奶水www永久免费| 国产精品亚洲mnbav网站 | 亚洲一区动漫卡通在线播放| 国产亚洲一卡2卡3卡4卡新区| 男女交性无遮挡免费视频| 亚洲av手机在线观看| 亚洲午夜久久久影院伊人| 亚洲日韩国产欧美一区二区三区| 日韩av无码免费播放| 永久免费av无码网站大全| 亚洲狠狠久久综合一区77777| 久久久久高潮毛片免费全部播放| 亚洲一区二区三区四区在线观看| 0588影视手机免费看片| 亚洲乱妇熟女爽到高潮的片| 亚洲高清无码综合性爱视频| 成在线人免费无码高潮喷水| 久久亚洲精品成人无码网站| 中文字幕一区二区免费| 亚洲色偷偷偷网站色偷一区| 成全视频免费高清| 特黄特色的大片观看免费视频| 国产亚洲无线码一区二区| 日韩不卡免费视频| 午夜亚洲WWW湿好爽| 女人张开腿给人桶免费视频| jlzzjlzz亚洲jzjzjz| 免费在线观看亚洲| 亚洲s码欧洲m码吹潮| 亚洲真人无码永久在线| 又黄又大的激情视频在线观看免费视频社区在线 | 四虎影院免费在线播放| 国产无限免费观看黄网站| 免费**毛片在线播放直播 | 久久国产美女免费观看精品| 亚洲国产精品成人久久久| 亚洲免费视频播放| 新最免费影视大全在线播放|