算法精解四(C语言版)

小酌软件工程

         本章开发曾经提到过,对数据结构和算法的理解在开发优秀的软件时是非常重要的。与其同等重要的是在我们开发工作中应用中应用软件工程中的一些良好准则。软件工程是个很广的主题,但从一些思想和概念中我们可以得到很多收获。这里就介绍一些相关的主题并将这些思想运用到安全书中。

模块化

       在软件设计中为了达到模块化的目的。一种方法是将精力集中在黑盒上。在软件开发中黑盒代表一个模块,它的内部实现并希望被使用这个模块的用户看到。用户只能模块设计这预定义好的公共接口和这个模块交互。这就是说,设计者仅仅只公开用户需要使用这个模块的必要信息,而将其他所有实现细节都隐藏起来,其结果就是用户并不关心模块的实现细节,也避免了(至少理论上是这样,随编程语言而定)与模块的内部实现相耦合。这些就是数据隐藏和封装的基本思想。软件工程中的良好准则在面向对象语言中更是被强制施行。尽管非面向对象编程语言并没有在语言本身强制实施这些观点和准则,我们自己依然可以做到。本书中的例子是设计抽象数据类型(ADT)。基本上一种数据类都是一个结构体。我们对结构体所能做的一切操作都被惊确定义,并在头文件中以公共接口的形式公开。

可读性

       通过一些方法我们能是程序变得更加可读。编写有意义的注释,使用贴切的标识符,编写自注释的代码,这都是一些范例。关于如何编写好的注释,各种不同的观点之间相差很大。但一个噩耗的基本准测是加上注释以便于其他的开发人员能够很容易地通过阅读这段注释来理解程序逻辑。另一方面,如果代码是自注释的则不需要添加注释,因为代码读起来几乎和注释一样清楚明了。本书中的自注释代码例子是在头文件中对给出的数据结构和算法的公共接口定义。

简洁性

        遗憾的是,在人类社会中我们常常倾向于将“复杂”和“智能”联系在一起/事实上,事实上,智能的解决方案通常都是最简单的。另外,最简单的解决方案常常也是最难找到的,本书中的大部分算法能够展示出简洁的力量。尽管人们对一些算法做了大量的研究工作后才证明了其正确性,但它们最总呈现的形态都是对问题本质而言简洁而清晰的解决方案。

一致性

       在软件开发中,一件非常值得去做的事情是建立编码约定并一直遵守这个约定。当然,约定必须容易识别。毕竟,如果其他人无法确定什么是约定,则约定也就不成约定了。

这种约定可以体现在许多成面上。例如,它们可以能只是代码形式的修饰,或者它们在概念上可能和如何解决特定类型问题有关联,无论是什么情况,一个好的约定的优秀之处在于一旦我们在一处看到它,我们就可以在别处识别它并理解它的作用。因此一致性也促进了代码的可读性和简洁性。本书中的两个形式约定的例子是注释的写法以及和数据结构相关的操作的命名方式。两个概念上的约定例子是在数据结构中管理数据的方式以及静态函数当做私有函数使用,也就是,它们不属于公共接口部分。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值