编写优质软件——代码可扩展性的几种实施方式

本文探讨了代码可扩展性的重要性,并介绍了三种实施方式:基于接口的设计,允许使用任何暴露相同接口的组件;插件架构,使应用程序能够发现并处理外部组件以添加新特性;以及状态机,通过将复杂任务分解为可管理的步骤,实现代码的高效扩展。这些策略旨在平衡灵活性和过度设计,确保软件的长期维护性和适应性。
摘要由CSDN通过智能技术生成

代码可扩展性的几种实施方式

《ThePragmaticProgrammer》(Addison-Wesley,1999)一书的作者DaveThomas和AndyHunt曾经说过,所有编程工作都是维护的一种形式。一个类在首次键入几分钟后就会进入无限的维护循环。大多数时候,维护要求把现有代码库重构成模式或者更简洁的设计。然而,维护的能力具备代码扩展的特性,即用新的函数扩展现有代码,且很好地整合现有代码。

DonaldKnuth对优化的说法几乎也同样适用于代码扩展性:过早实施是刀恶之源。很多开发者都渴望写出易于扩展的代码。这可能导致过度设计。

当可扩展特性是基础特性时,你可能需要在你的代码里考虑以下3个方面:基于接口的设计,插件架构和状态机。

重要:大多数时候,你需要找出证据证明你需要一个更可扩展、更灵活的设计。对更抽象、更灵活的设计的需要通常是重构过程的结果。一个更可扩展的设计也可以出现在冲刺的早期阶段,此时你可能正要实现一个新的特性。

基于接口的设计

接口代表两个软件组件之间的契约。当一个软件组件,如一个类,声明它能处理特定接口时,意味着它可以使用任何暴露相同接口的其他组件,不管是现有的还是将来会写的。这个理念就是可扩展代码的基础。

这个方案的关键是你应该设计成可扩展的软件组件的数量。把所有类都设计成可扩展的,且对于它们需要处理的每个逻辑都采用接口是非常不切实际的。在这点上没把握好就会导致你过度设计。

这里的挑战就是弄清何时从一个策略提取接口并在多个组件之间共享,这才是真正体现你更多价值的地方。相信我们,这是一个严峻的挑战。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Mr___Ray

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值