zoukankan      html  css  js  c++  java
  • javascript 最佳实践

    1.代码语义化,像写一个故事一样描述代码。

      空行4个空格

      变量名称表面意义,不限制长度,驼峰写法

      布尔值用isChange,来命名

      给包名,main.utils.init /main.date.tatal (应用名/包/实现的方法),语义化

      方法名 动词+名称 function getAllParams(){ }

    2.对象所有权,随意更改他人的方法和类,对象,会造成不可知的错误,所有的更改,都在继承,拷贝的基础上进行。不要对原来写的方法做修改

      每个实现一个类的人,对这个方法和类拥有修改的权力,其他人应该没有。

      main.utils.init /main.date.tatal (应用名/包/实现的方法),语义化

      减少全局的变量,所有的变量都应该定义在,包类,块中,不应该直接开放写。(方法里面可以即使销毁,减少内存的开销。而且修改的时候,可以直接追踪是那个包出现的问题)

    3.减少事件复杂度,向上查询能少几次,速度会变快。特别是循环里面,变量的提取,能减少更多的读取开销。

      var name = this.tatal.getDate().name;
    
      var age = this.tatal.getDate().age;

         改写

    var date = this.tatal.getDate()
    
    var age = date .age;
    var name = date.name;

      对dom的操作减少事件复杂度,把所有的更新修改到上一级上面

      

    for(var i = 0; i< 100; i++){
        dom = create('div');
        dom.append('<div>sds</div>');
        $('main').append(dom);              
    }

      应该减少去修改dom,一次性生成一整个DOM,去填充mian,而不是填充100次dom的更新

     

    4.少量的循环,直接写,不用循环。因为

     for循环会形成一个局部的作用域,包含了对外部的变量引用指针,占用更多内存,变慢,少量的循环直接写。

    5.减少耦合性

    尽量减少文件和文件之间的依赖,一个功能的实现,仅仅在它自己本身修改,这样一旦删除某个功能,只需要修改一处。比如:为了修改点击事件,应该只需要把点击的事件直接删除就行。而不是在html和js和css都去修改。

      1.html和js不要混淆写 , $('div').append('<div>sdd</div>')这种写法是不推荐的。html仅仅在html去实现,否则出了问题要两边调试。

      2.<div style="22px">这样写也不支持,应该尽量用 更新class 去更新样式,这样所有的css调式都在css层去实现。而不是改好几个地方,也不知道是哪里出问题

    6. 对象 和 array 的字面量写法

    不用 new Object 和 new Array() 直接

    { name: 'wdds' , age: 1000 } 和 ['age', 'dsd', 'sjdks'] 这样写开销比较小

    7.  Switch 比 do while 更快,do while 比 while 更快

    其他: cpu里面包含寄存器,是速度最快的存储结构。实时计算的变量值。

           堆和栈都保存在 内存里面, (ram) ,堆里面保存的是 new Object() 出来的实体。引用指向的内存。

        栈保存的是基本变量类型和引用的指针。栈的前后移动,栈的指针迁移,可以清除数据。

        (所以 new Object()出来的对象都应该及时被销毁,不然占了太多的内存,都在堆里面。读取速度变慢,程序就会卡。

            定义的全局变量都是不会及时销毁的,都在栈里面,还不被销毁,非常占内存,所以不要定义全局变量。)

    bugList:

    1.onclick 事件 会造成 click 内事件的闭包问题,导致内存的泄漏,如何释放这部分变量

  • 相关阅读:
    PL/SQL连接错误:ora-12705:cannot access NLS data files or invalid environment specified
    java 后台开发关键词解释
    架构、框架和设计模式关系(转)
    Web.xml配置详解
    SVN“验证位置时发生错误”的解决办法
    java遍历给定目录,树形结构输出所有文件,包括子目录中的文件
    android EditText 默认情况下不获取焦点(不弹出输入框)
    android listview item取消按点击效果
    如何实现可动态调整隐藏header的listview
    eclipse 启动到loading workbench... 自动关闭
  • 原文地址:https://www.cnblogs.com/chenyi4/p/12089914.html
Copyright © 2011-2022 走看看