<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 @ 2009-10-31 14:49 sevenduan 閱讀(307) | 評論 (0)編輯 收藏

    按使用頻率排名:
    1,IDE
    個人首選aptana IDE,因為用慣了eclipse快捷鍵。
    根據個人喜好,可選intelJ,gvim
    2,debugger
    熟記debugger的快捷鍵是高效coding的關鍵之一。
    FF當屬firebug,IE除了IE8的debugger沒有一個好鳥。
    3,API doc
    熟練翻閱各種API電子書,HTML 和 jscript的電子書是必備的,根據需要常備YUI,mootools,jquery等。要知道,許多api的function并不是可以那么容易google得到的。
    e.g.string.replace(Regex, function)
    function f2c(s) {
    var test = /(\d+(\.\d*)?)F\b/g; //Initialize pattern.
    return(s.replace
    (test,
    function($0,$1,$2) {
    return((($1-32) * 5/9) + "C");
    }
    )
    );
    }

    4,小眾工具
    YSlow, Google page speed, httpwatch ==> performance tuning
    Jslint ==> coding convention
    YUI Compressor, Jawr => compress
    5,茶余飯后的消遣
    先看看yui,mootools,jquery,Prototype & script.aculo.us,ext的source code,
    然后回來refactor自己項目里成團的FML的js
    閑的蛋疼就去51js吹牛起哄

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


    JavaEye推薦




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

    傳統的client side js MVC 結構:
    Model:
    json object - mapping with PO from server side
    View:
    HTML + CSS
    Controller:
    Page object - 負責頁面初始化邏輯(驗證、事件綁定、json數據渲染到DOM),提交時,獲取DOM的數據組裝json。

    Concrete Javascript Pattern :
    把status 和 behavior 直接綁定到DOM element上。

    jquery concrete framework:
    http://github.com/hafriedlander/jquery.concrete
    http://github.com/nkallen/effen/
    前者42k,后者0.8k。
    與直接在DOM element object上添加status or behavior相比,框架的好處是可以批量添加。

    用例:
    對于autocomplete組件,formatted data = data name; saved data= data id;
    之前有一個實現是為了save data id,多加了一個 input hidden.
    如果是concrete js pattern, 可以在這個input element 上直接保存數據。
    effen + jquery.autocomplete test:
    $('body').append('<div id="dom_test"><input id="month"/></div>');
                var monthInput = $("#month");
                monthInput.fn({
                    dataPair: function(){
                        if (arguments.length == 0) {
                            return this._data;
                        }
                        else {
                            this._data = arguments[0];
                        }
                    },
                    _data: []
                });
                monthInput.autocomplete(months, {
                    minChars: 0,
                    max: 12,
                    autoFill: true,
                    mustMatch: true,
                    matchContains: false,
                    scrollHeight: 220,
                    formatItem: function(data, i, total){
                        if (data[0] == months[new Date().getMonth()]) 
                            return false;
                        return data[0].substring(0, 3);
                    },
                    formatResult: function(row){
                        return row[1];
                    }
                });
                monthInput.result(function(event, data, formatted){
                    var _data = data[0].split("|");
                    monthInput.fn("dataPair", _data);
                    console.dir(monthInput.fn("dataPair"));
                });
    



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


    JavaEye推薦




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

    solution:
    所有的$(html)用法,給html的內容加上關閉標簽,否則IE不支持
    $('<li class="describe">')
    //refactor into
    $('<li class="describe"/>')
    //or
    $('<li class="describe"></li>')

    -------------------------
    screw.unit
    是一個很實用的BDD框架。
    除了TDD的時候很方便,在學習任何新框架或者javascript語法的時候,都可以把測試分門別類的組織起來,就是一個生動的文檔。





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

    僅列出標題
    共4頁: 上一頁 1 2 3 4 
    主站蜘蛛池模板: 亚洲日韩国产一区二区三区在线| 久久精品国产亚洲AV高清热| 中文无码亚洲精品字幕| 99热这里只有精品6免费| 亚洲AV色香蕉一区二区| APP在线免费观看视频| 精品久久久久久亚洲| 搡女人免费免费视频观看| 永久亚洲成a人片777777| 成人一区二区免费视频| 亚洲午夜久久久久久久久久| 久久国产福利免费| 亚洲av永久无码制服河南实里| 免费人成在线观看视频高潮| 亚洲AV无码码潮喷在线观看 | 亚洲日韩AV一区二区三区四区| 91视频国产免费| 在线亚洲午夜片AV大片| 爽爽日本在线视频免费| 国产成人人综合亚洲欧美丁香花| 免费v片在线观看品善网| 一级成人a做片免费| 亚洲精品无码高潮喷水在线| 一级毛片成人免费看免费不卡| 亚洲美女视频一区二区三区| 成人片黄网站A毛片免费| 亚洲aⅴ无码专区在线观看春色| 亚洲人成网站在线观看青青| 久久精品国产免费一区| 亚洲高清免费在线观看| 天天摸夜夜摸成人免费视频| 一级毛片免费毛片毛片| 久久久久久亚洲精品成人| 全免费a级毛片免费**视频| 一级毛片免费不卡| 久久精品国产亚洲AV麻豆网站| 欧美大尺寸SUV免费| 国产福利电影一区二区三区,免费久久久久久久精 | 日韩免费的视频在线观看香蕉| 老司机亚洲精品影院| 热久久精品免费视频|