<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 閱讀(310) 評論(0)  編輯  收藏

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


    網站導航:
     
    主站蜘蛛池模板: 99在线观看视频免费| 亚洲综合中文字幕无线码| 一个人免费观看日本www视频| 我的小后妈韩剧在线看免费高清版 | 亚洲一区二区三区影院| 一级a性色生活片久久无少妇一级婬片免费放 | 777成影片免费观看| 亚洲免费闲人蜜桃| 欧美大尺寸SUV免费| 亚洲日本在线电影| 又黄又爽一线毛片免费观看 | 亚洲欧洲免费无码| 国产乱子影视频上线免费观看| 黑人粗长大战亚洲女2021国产精品成人免费视频| 全免费A级毛片免费看网站| 在线播放亚洲精品| 亚洲精品无码专区久久久| 久久免费精彩视频| 国产精品亚洲专区在线观看| 国产精品久久久久久久久久免费 | 亚洲av综合色区| 91精品成人免费国产片| 亚洲欧美成人一区二区三区| 波多野结衣一区二区免费视频| 一级a性色生活片久久无少妇一级婬片免费放 | 亚洲最大免费视频网| 日本一道高清不卡免费| 两个人www免费高清视频| 亚洲网站在线免费观看| 国产精品va无码免费麻豆| 成年女人A毛片免费视频| 亚洲精品在线不卡| 免费在线观看日韩| 8x8×在线永久免费视频| 亚洲日韩在线中文字幕综合| 亚洲国产精品成人精品无码区 | 国产嫩草影院精品免费网址| 中文无码成人免费视频在线观看| 亚洲一级毛片在线观| 国产亚洲精品无码专区| 国产免费不卡视频|