9.1 改进以数据为中心的应用程序

728 篇文章 1 订阅
349 篇文章 0 订阅

9.1 改进以数据为中心的应用程序

 

我们回顾一下前面章节中讨论的以数据为中心的应用程序一些内容。第七章,我们讨论了以数据为中心的应用程序的关键是数据结构的设计。函数语言对数据结构的构造提供了非常简单、概念明确思考办法。我们已经学习了所有基本的数据类型,元组、差别联合和记录;还学习了声明泛型类型,实现了在不同程序中重用;讨论了 F# 库中的一些类型,如选项类型和函数式列表。

到目前为止,我们已经单独实现了数据类型的操作,这是函数式应用程序设计的通常方法,与面向对象程序设计不同,其中操作是类型声明的一部分。我们在第七章讨论过这一方法动机,但是,仍有必要简要回顾一下它对函数式程序的主要优势:

■ 在处理差别联合时,能够轻松地添加操作。

■在 F# 中,以这种方式写代码,语法非常简洁,因此,代码可以写得更快,而且能够很容易为不同的解决方案建立原型。

■能够充分利用 F# 的类型推理。正如我们在处理 .NET 对象时所看到的,由于编译器无法根据调用的成员推断出类型,因此,经常需要类型批注。

■这种编程风格也更好地支持了函数技术,比如散函数应用和管道。

■轻量级的函数式风格,可以使用 F# 交互式控制台(Interactive shell),轻松实现交互方式运行代码。

 

提示

 

如果操作能够保持独立于类型,数据结构就不会频繁更改。定义了数据结构以后,就可以创建这个类型的值了,并且能够一直存在于在 F# Interactive;然后,可以写函数的第一版,使用 F# Interactive 进行测试,改正可能出现的错误,对程序进行改进,并再次用同样的数据进行测试。如果我们对数据结构连同其所有的操作一起改变,这一过程将非常困难。

 

使操作成为数据结构的一部分,有许多理由支持,我们大部分经验可能来自 C#,我们用一个示例来说明。在第七章,我们写过一个简单的 Rect 类型,有两个处理函数。可以看到,清单 9.1 中重复了这段代码。示例使用了一些 System.Drawing 命名空间下的类型,因此,如果创建新项目,需要添加对 System.Drawing.dll 程序集的引用。

 

清单 9.1 Rect 类型和处理函数(F#)

open System.Drawing 

 

type Rect = 

  { Left: float32; Top: float32 

    Width: float32; Height:float32 }

 

let deflate(rc, wspace, hspace) =     <-- 缩放矩形

  { Left = rc.Left + wspace; Width =rc.Width - (2.0f * wspace) 

    Top = rc.Top + hspace;Height = rc.Height - (2.0f * hspace) }

 

let toRectangleF(rc) =     <-- 转换成 System.Drawing 表示

  RectangleF(rc.Left, rc.Top,rc.Width, rc.Height)

 

首先,我们声明了类型,然后,定义两个操作处理矩形值。操作是用独立的 F# 函数实现的,但是,如果我们把它们实现为方法,在写代码时会更容易发现。在Visual Studio 中,不需要记住函数的名字,在值的名字后键入点,智能感知会弹出操作的列表;另外,代码也更好组织,因为我们知道类型中有哪些操作。如何从这两种方案F# 中选出最好的,很明显是一个难题。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
资源包主要包含以下内容: ASP项目源码:每个资源包中都包含完整的ASP项目源码,这些源码采用了经典的ASP技术开发,结构清晰、注释详细,帮助用户轻松理解整个项目的逻辑和实现方式。通过这些源码,用户可以学习到ASP的基本语法、服务器端脚本编写方法、数据库操作、用户权限管理等关键技术。 数据库设计文件:为了方便用户更好地理解系统的后台逻辑,每个项目中都附带了完整的数据库设计文件。这些文件通常包括数据库结构图、数据表设计文档,以及示例数据SQL脚本。用户可以通过这些文件快速搭建项目所需的数据库环境,并了解各个数据表之间的关系和作用。 详细的开发文档:每个资源包都附有详细的开发文档,文档内容包括项目背景介绍、功能模块说明、系统流程图、用户界面设计以及关键代码解析等。这些文档为用户提供了深入的学习材料,使得即便是从零开始的开发者也能逐步掌握项目开发的全过程。 项目演示与使用指南:为帮助用户更好地理解和使用这些ASP项目,每个资源包中都包含项目的演示文件和使用指南。演示文件通常以视频或图文形式展示项目的主要功能和操作流程,使用指南则详细说明了如何配置开发环境、部署项目以及常见问题的解决方法。 毕业设计参考:对于正在准备毕业设计的学生来说,这些资源包是绝佳的参考材料。每个项目不仅功能完善、结构清晰,还符合常见的毕业设计要求和标准。通过这些项目,学生可以学习到如何从零开始构建一个完整的Web系统,并积累丰富的项目经验。
资源包主要包含以下内容: ASP项目源码:每个资源包中都包含完整的ASP项目源码,这些源码采用了经典的ASP技术开发,结构清晰、注释详细,帮助用户轻松理解整个项目的逻辑和实现方式。通过这些源码,用户可以学习到ASP的基本语法、服务器端脚本编写方法、数据库操作、用户权限管理等关键技术。 数据库设计文件:为了方便用户更好地理解系统的后台逻辑,每个项目中都附带了完整的数据库设计文件。这些文件通常包括数据库结构图、数据表设计文档,以及示例数据SQL脚本。用户可以通过这些文件快速搭建项目所需的数据库环境,并了解各个数据表之间的关系和作用。 详细的开发文档:每个资源包都附有详细的开发文档,文档内容包括项目背景介绍、功能模块说明、系统流程图、用户界面设计以及关键代码解析等。这些文档为用户提供了深入的学习材料,使得即便是从零开始的开发者也能逐步掌握项目开发的全过程。 项目演示与使用指南:为帮助用户更好地理解和使用这些ASP项目,每个资源包中都包含项目的演示文件和使用指南。演示文件通常以视频或图文形式展示项目的主要功能和操作流程,使用指南则详细说明了如何配置开发环境、部署项目以及常见问题的解决方法。 毕业设计参考:对于正在准备毕业设计的学生来说,这些资源包是绝佳的参考材料。每个项目不仅功能完善、结构清晰,还符合常见的毕业设计要求和标准。通过这些项目,学生可以学习到如何从零开始构建一个完整的Web系统,并积累丰富的项目经验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值