zoukankan      html  css  js  c++  java
  • 接口和面向接口编程

    1,抽象类

    例如,Duck对象和Chicken对象的类型都隐藏在Animal类型的身后,向上转型。建立契约,抽象类里面的abstract方法,各个子命令类继承或者覆写。

    面向接口编程,接口是个抽象的概念,可以理解为:面向超类型编程,当对象的具体类型被隐藏在超类型的身后,这些对象就可以相互替换使用,而我们的关注点就会从对象类型转移到对象的行为上。也可以看成面向抽象编程,即针对超类型中的abstract方法编程。

    Javscript是一门动态类型语言,类型本身比较模糊,除了number,string,boolean等,其他对象天生被向上转型成Object类型。动态类型语言中,对象的多态性与生俱来。

    因为javascript是动态语言,所以我们在业务代码中经常插入一些跟业务无关的防御性代码。

    TypeScript是微软开发的一种编程语言,是JavaScript的一个超集,与CoffeeScript类似,TypeScript最终会被编译成Javascript代码执行,通过TypeScript我们可以使用静态语言的方式来编写JavaScript程序。

    代码重构技巧:

    (1)提炼函数

    (2)合并重复的条件片段

    (3)将条件分支语句提炼成函数,语义化条件后更加容易理解

    (4)合理使用循环,举例如下: 

    var createXHR = function(){
    var xhr;
    try{
         xhr = new ActiveXObject( 'MSXML2.XMLHttp.6.0' );
    }catch(e){
    try{
         xhr = new ActiveXObject( 'MSXML2.XMLHttp.3.0' );
    }catch(e){
         xhr = new ActiveXObject( 'MSXML2.XMLHttp' );
    }
    }
         return xhr;
    };
    var xhr = createXHR();

     上面是创建XHR对象的代码,可以使用循环更加简练:

    var createXHR = function(){
    var versions= [ 'MSXML2.XMLHttp.6.0ddd', 'MSXML2.XMLHttp.3.0', 'MSXML2.XMLHttp' ];
    for ( var i = 0, version; version = versions[ i++ ]; ){
      try{
         return new ActiveXObject( version );
      }catch(e){
      }
    }
    };
    var xhr = createXHR();

    (5)提前让函数退出,代替嵌套条件分支

    每个函数只能有一个入口和一个出口,关于函数只有一个出口,嵌套的条件分支往往深信这个,但是实际上,如果对函数的剩余部分不感兴趣,就应该提前退出。

    (6)对于过长的参数列表,可以用对象参数代替,不用再关心参数的数量和顺序,只要保证参数对应的key值即可。

    (7)尽量减少参数数量

    (8)少用三目运算符

    程序员喜欢大规模使用三目运算符来代替传统的if,else,理由是性能高,代码量少。但是有时候会得不偿失,如果条件复杂还是乖乖使用if,else吧

    (9)合理使用链式调用

    JavaScript中实现链式调用很简单,让方法调用结束后返回对象本身即可。但是链式调用的调试和维护比较困难。

    (10)分解大类型

    (12)用return退出多重循环 

    var print = function( i ){
    console.log( i );
    };
    var func = function(){
     for ( var i = 0; i < 10; i++ ){
       for ( var j = 0; j < 10; j++ ){
         if ( i * j >30 ){
           return print( i );
         }
         }
       }
     };
    func();

     针对return后面要执行的代码,可以提炼成一个单独的函数,然后执行。

    【完】

    I leave uncultivated today, was precisely yesterday perishes tomorrow which person of the body implored,我荒废的今日,正是昨日殒身之人祈求的明日。

    ——哈佛大学校训

  • 相关阅读:
    c++文件对齐
    笔试题——C++开发简单记录错误模块
    dp算法之有代价的最短路径
    Linux虚拟机安装教程
    C++判断回文
    干货 | 10分钟带你掌握branch and price(分支定价)算法超详细原理解析
    干货 | 10分钟教你用column generation求解vehicle routing problems
    干货 | 10分钟带你彻底了解column generation(列生成)算法的原理附java代码
    干货 | 10分钟搞懂branch and bound(分支定界)算法的代码实现附带java代码
    干货 | 10分钟带你全面掌握branch and bound(分支定界)算法-概念篇
  • 原文地址:https://www.cnblogs.com/tangjiao/p/10412540.html
Copyright © 2011-2022 走看看