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

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

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

    七段

    無(wú)論怎樣,請(qǐng)讓我先感謝一下國(guó)家。

    BlogJava 首頁(yè) 新隨筆 聯(lián)系 聚合 管理
      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都會(huì)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 等是值的寫(xiě)入class中,不會(huì)在去引用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
    直接編譯成結(jié)果寫(xiě)入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 人發(fā)表留言,猛擊->>這里<<-參與討論


    JavaEye推薦




    文章來(lái)源:http://sevenduan.javaeye.com/blog/504911
    posted @ 2009-10-31 14:49 sevenduan 閱讀(310) | 評(píng)論 (0)編輯 收藏

    按使用頻率排名:
    1,IDE
    個(gè)人首選aptana IDE,因?yàn)橛脩T了eclipse快捷鍵。
    根據(jù)個(gè)人喜好,可選intelJ,gvim
    2,debugger
    熟記debugger的快捷鍵是高效coding的關(guān)鍵之一。
    FF當(dāng)屬firebug,IE除了IE8的debugger沒(méi)有一個(gè)好鳥(niǎo)。
    3,API doc
    熟練翻閱各種API電子書(shū),HTML 和 jscript的電子書(shū)是必備的,根據(jù)需要常備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,
    然后回來(lái)refactor自己項(xiàng)目里成團(tuán)的FML的js
    閑的蛋疼就去51js吹牛起哄

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


    JavaEye推薦




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

    傳統(tǒng)的client side js MVC 結(jié)構(gòu):
    Model:
    json object - mapping with PO from server side
    View:
    HTML + CSS
    Controller:
    Page object - 負(fù)責(zé)頁(yè)面初始化邏輯(驗(yàn)證、事件綁定、json數(shù)據(jù)渲染到DOM),提交時(shí),獲取DOM的數(shù)據(jù)組裝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相比,框架的好處是可以批量添加。

    用例:
    對(duì)于autocomplete組件,formatted data = data name; saved data= data id;
    之前有一個(gè)實(shí)現(xiàn)是為了save data id,多加了一個(gè) input hidden.
    如果是concrete js pattern, 可以在這個(gè)input element 上直接保存數(shù)據(jù)。
    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 人發(fā)表留言,猛擊->>這里<<-參與討論


    JavaEye推薦




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

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

    -------------------------
    screw.unit
    是一個(gè)很實(shí)用的BDD框架。
    除了TDD的時(shí)候很方便,在學(xué)習(xí)任何新框架或者javascript語(yǔ)法的時(shí)候,都可以把測(cè)試分門(mén)別類(lèi)的組織起來(lái),就是一個(gè)生動(dòng)的文檔。





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

    僅列出標(biāo)題
    共4頁(yè): 上一頁(yè) 1 2 3 4 
    主站蜘蛛池模板: 亚洲人成网www| 免费很黄很色裸乳在线观看| 亚洲AV永久无码精品| 国产精品内射视频免费| 亚洲精品无码专区2| 免费的黄色网页在线免费观看| 免费99热在线观看| 国内成人精品亚洲日本语音 | 三年片在线观看免费观看大全动漫| 免费在线视频一区| a在线视频免费观看在线视频三区| 日韩高清免费在线观看| 国产精品观看在线亚洲人成网| 国产一级淫片免费播放| 一区二区三区免费视频网站 | 91麻豆国产免费观看| 亚洲天堂一区二区三区| 成年女性特黄午夜视频免费看| 香蕉视频亚洲一级| 中文字幕在亚洲第一在线| 无人在线观看免费高清| ww亚洲ww在线观看国产| 日韩a级毛片免费观看| 人妻仑乱A级毛片免费看| 亚洲国产成人片在线观看无码 | 成人毛片手机版免费看| 看一级毛片免费观看视频| 成人午夜亚洲精品无码网站| 久久精品成人免费网站| 97se亚洲国产综合自在线| 日韩亚洲国产二区| 免费国产黄网站在线观看| 亚洲依依成人亚洲社区| 美腿丝袜亚洲综合| 222www在线观看免费| 真人无码作爱免费视频| 亚洲国产精品一区二区久久| 操美女视频免费网站| 国产99精品一区二区三区免费 | 亚洲中文字幕无码av在线| jjzz亚洲亚洲女人|