管道式编程

170 阅读2分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第15天,点击查看活动详情

前言

之前看到的一篇技术文章,管道式编程,感觉很有意思,但其设计思想其实就是跟现在的箭头函数,在 typescript 中应该可以更多看到这种方式设计。

管道式编程

管道式编程,顾名思义,就是很多管道输入可以汇集到最后一个输出或者一个输入分叉输出很多管道。在编程语言中其实就是将业务功能拆解成多个函数,然后可以像管道一样组合函数,将函数串联起来,完成一项功能。

先观察下面个图片

优点:

  • 创建一个流畅的编程范例,将语句转换为表达式并将它们链接在一起【业务逻辑处理拆分多个具有明确职责的方法,最后在链接在一起】
  • 用线性排序替换代码嵌套【代码嵌套---->线性排序】
  • 消除变量声明 - 甚至不需要 var
  • 提供某种形式的可变不变性和范围隔离
  • 将结构代码编写成具有明确职责的小 lambda 表达式

缺点:比较适合于流程式处理

简单范例:

****Double->string:Double-->Int-->String

扩展函数

这里还引申出一个新的内容:扩展函数。在MSDN中的杰斯: 扩展方法使你能够向现有类型“添加”方法,而无需创建新的派生类型、重新编译或以其他方式修改原始类型。

特点:

  • 必须是静态类,静态方法
  • 第一个参数必须包含this关键字,且后面是它所扩展的类的名称

示例:

//扩展String
public static ExtendString{
  public static string DoString(this string inValue)
  {
     return "扩展:" +inValue;
  }
}

//扩展自定义类
public class MyClass{
  public int a;
  public int b;
  public  MyClass(int aIn,int bIn)
  {
    a=Ina;
    b=Inb;
  }
  public int  DoSum(){
    return a+b;
  }
}
public static ExtendClass{
  public string static DoArg(this MyClass inClass)
  {
      return inClass.DoSum()/2;
  }
}