科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道如何避免软件开发中不兼容的设计方法

如何避免软件开发中不兼容的设计方法

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

本文说明了在软件开发时为什么设计方法会不兼容,以及如何建立一个通用的设计方法。

作者:Builder.com.cn 2007年7月31日

关键字: Office

  • 评论
  • 分享微博
  • 分享邮件

工厂和枚举

另外一种比较复杂的设计情形是抽象工厂模型的实现——这种模型允许根据配置创建任何对象。这完全就是一种十分灵活的模型,在创建具有可扩展性的解决方案时这是一种强大的武器。

创建工厂时的一个常见错误是使用枚举来控制工厂实际创建什么样的对象。这是一个错误,因为它使用了一种非常灵活的解决方案,因此能够被轻易地修改以支持新的功能,并将它集成到一个要求重新编译代码的方式。其结果是工厂本来具有的可扩展性被枚举绑住了手脚。一种更好的思路是使用一种基于标识符的配置,以明确创建什么样的内容。通过在运行期间的配置而不是编译期间的枚举来查看对象类型,您可以很好地保留工厂设计模式的灵活性。

基本的设计思想是不兼容的。工厂是自由灵活、可扩展的。而枚举则是对值的半刚性定义。

编程就像建立理论

因“Backus-Naur Form”语言句法概念而闻名的Peter Naur在1985年写了一篇题为《编程就像建立理论(Programming as Theory Building)》的文章。这篇文章的一个基本思想就是大多数人都相信编程更像是在建立一种理论。换句话说,编程是对系统应该如何工作的思维模型的发展。不同开发人员的理论基础越一致,编出来的应用程序的一致性就越高,应用程序的总成本就越低。

如果Peter的思想从根本上讲是正确的,那么在同一个应用程序里存在不兼容或者完全对立的设计会让这个程序的开发很难进行。如果您必须按照一种理论开发某个子系统的操作,然后又必须在另一个子系统上应用完全不同的理论,那么这显然会极大地增加系统的复杂性。

您的目标应该是尽可能地去除设计中不兼容的地方,如果没有办法完全消除不一致,至少应该清楚地标示出来并进行文档说明,这样才能让人知道这些地方需要更改理论。

寻找一致性

解决设计思想中不兼容的问题没有很容易的办法。但是,如果想要开发可维护的系统,这是绝对需要解决的问题。一般来说,您必须进行一些重要的工作来解决兼容性的问题。然而,虽然您需要付出努力,但是这些解决办法一般也不是那么困难找到的。有的时候,这只不过意味着将一种设计思想与另外一种设计思想靠近,以达到兼容的目的。

例如,如果您有一些密封类,它们无法从其他的地方衍生出来,在解决方案里还有其他一些类,它们又必须从其他的地方衍生出来——您可以花点时间和精力来确保密封类可以通过继承获得(也就是说非密封的)。

更加复杂一点的(解决方案)是增加一些必要的代码把多值字段转换成一个查询或者跨引用的表格。这也就是说要再创建一个表格,并更新应用程序里任何相关的代码以便能够处理它,但是,通过属性来模拟对多值字段的操作也是可能的,这样整个系统就不必再更改那些需要通过跨表格才能够完成的地方。

类似的,您可以把枚举的内部表示替换成为一个整数(枚举的基础类型),然后在您必须知道如何实例化特定类的时候把枚举交给整数。

实现一致性并不总是一帆风顺的。但是,它会创造一个从存在设计冲突的模式转到一个更加兼容的模式的机会,这样开发人员就能够理解和适应那些原本他们令手足无措、困惑万分、相互矛盾的模式了。

责任编辑:张琎

查看本文的国际来源

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章