现代软件工程管理复杂性之信息隐藏和抽象,接缝之前可用,接缝之后隐藏,减少偶然复杂性...

信息隐藏和抽象是,在研究对象和系统时,去除物理的、空间的或时间的细节或属性,把注意力集中在更重要的细节上的过程。

信息隐藏和抽象是不同的,也是相关的,为了思考软件工程的基本原则,最好把它们放在一起考虑。

在代码中划线或接缝,当我们从外部看那些线时,我们不关心它们后面是什么。作为函数、类、库、模块的使用者,我不应该需要知道或者关心它是如何工作的任何细节,只需要知道如何用它就够了。

隐藏的信息是代码的行为,包括实现细节以及可能使用或不使用的任何数据,我向外界展示的抽象应该实现这个技巧,即对代码的其他部分保密。

我们的目标是管理复杂性,以便我们能够构建超出我们头脑可以轻松掌握的系统,那么我们需要隐藏信息。

难以在代码库上工作的代码称为大泥球。

对于害怕更改代码的问题,现实的解决方案是抽象和测试。对代码进行抽象,就是隐藏系统中一部分的复杂性,而不让另一部分知道。这意味着,我们可以更安全地更改系统中的一部分代码,并且有很强的信心,即使我们的更改是错误的,也不会对其他部分产生不利影响。为了更确定这一点,我们还需要测试。

通过测试改进抽象。

持续的自动化的回归测试是持续交付的基础之一。我们的工作使我们的软件始终处于可发布状态,并且通过高效的、有效的、自动化的测试来确保软件是可发布的。

将测试当做代码理想行为的小型规范,我们就是从外到内描述理想行为。我们的目标是尽可能简单地表达规范,即测试,尽可能清晰、简单地表达对我们想要行为的渴望。我们就是在抽象我们的设计。我们为代码定义一个接口,使表达我们的想法变得容易。我们的代码也更容易使用。编写测试是一种设计行为。我们正在设计与代码交互的方式。这种基于抽象的方法将代码需要做什么和如何做分离开来。这是一种实际的、实用的、轻量级的契约式设计。

现代云供应商正忙于对运行复杂、分布式、可伸缩的应用程序的许多操作进行抽象而隐藏复杂性。抽象是我们处理计算机的基本能力。编写软件就是创建新的抽象。

抽象漏洞即一种抽象泄露了本该隐藏的细节。抽象是一种建模,是真理的代表,但不是真理本身。我们的目标不是尽善尽美,而是建立有用的模型,帮助我们用作解决问题的工具。

抽象及其核心的建模是设计的基础。

对问题领域进行建模将为设计提供一些指导,能够实现问题领域的关注点分离,帮助你更好地理解你尝试解决的问题。

我们的目标是尽可能抽象偶然复杂性领域和本质复杂性领域的接口。

使用抽象将你的代码和第三方代码隔离开。

识别抽象最佳点的能力,通过可测试性的设计得到加强。测试帮我们练习对被测代码接口的理解。加上隐藏信息,为未来的代码变更打开大门。

抽象是软件开发的核心。当我们在代码中构造隐藏信息的接缝时,我们的代码会更好。

4b5a818d2b8e1f6f6d11fa7137547c66.jpeg

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值