<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 
    主站蜘蛛池模板: 亚洲日本在线看片| 亚洲综合激情五月色一区| 亚洲色偷偷综合亚洲av78 | 男女超爽视频免费播放| 午夜免费福利片观看| 亚洲综合最新无码专区| 亚洲熟女www一区二区三区| 18禁男女爽爽爽午夜网站免费| 亚洲国产精品一区二区久久| 国产午夜亚洲精品国产成人小说| 亚洲a∨无码一区二区| 久久久久国色AV免费观看性色| 亚洲国产综合精品| 99ee6热久久免费精品6| 国产成A人亚洲精V品无码| 老司机午夜精品视频在线观看免费| 色妞WWW精品免费视频| 亚洲精品无码不卡在线播HE| 免费一区二区三区在线视频| 成人亚洲综合天堂| 成人毛片免费播放| mm1313亚洲国产精品美女| 亚洲第一页在线视频| 精品97国产免费人成视频| 亚洲精品无码中文久久字幕| 亚洲中文字幕无码av在线| 免费国产99久久久香蕉| 亚洲综合伊人久久大杳蕉| MM1313亚洲精品无码久久| 国产美女a做受大片免费| 激情婷婷成人亚洲综合| 久久精品亚洲男人的天堂 | 亚洲国产视频网站| 国产精品爱啪在线线免费观看| 亚洲冬月枫中文字幕在线看| 无码视频免费一区二三区 | 国产亚洲视频在线播放| 亚欧免费一级毛片| 亚洲一区二区三区不卡在线播放| 日韩在线看片免费人成视频播放| 免费亚洲视频在线观看|