1.3 小酌软件工程

1.3 小酌软件工程

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

模块化

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

可读性

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

简洁性

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

一致性

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

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

 

PS:

1、此书(Mastering Algorithms with C)译稿版权归本人(Love_Lei)及好友(bigship)共同所有,未经本人同意谢绝一切转载,并不得抄袭,模仿,盗版!更请大家监督盗版之人!

2、由于本人水平有限,如对译文有任何建议和异议,欢迎大家留言指正,我们共同讨论学习!谢谢!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值