什么是最重要的结构化软件设计原则?

时间:2010-01-26 21:28:48

标签: language-agnostic programming-languages software-design design-principles

今天我看到了一份职位描述,要求“使用C ++进行重要的编码经验并在结构化设计原则方面进行彻底的基础”,所以我想到了这些原则是什么。首先我觉得在一个句子中看到C ++和“结构化设计”有点奇怪,然后我想,好的C ++是一种多范式编程语言,所以也许它像C一样使用。我也查了{{3}并阅读有关异常处理和状态机的反结构化设计(毫不奇怪),但我仍然觉得很多东西都缺失了。所以我问你,最重要的结构化软件设计原则是什么?

3 个答案:

答案 0 :(得分:5)

结构化编程和结构化设计不一定是一回事。一般而言,结构化设计将专注于将事物分解为结构化元素。有很多方法在这里同样有效,但我会说大多数都专注于信息隐藏。

  • 面向对象的设计显然将事物分解为对象,其中操作和数据在层次结构中相关的紧密绑定的类中保持在一起
  • 抽象数据类型本质上是非OO等价物,其中数据和操作保持在一起但不受与面向对象设计完全相同的意义约束。层次结构和继承在ADT中不起作用,至少在我见过的那些中没有。
  • 元编程专注于构建泛型类型,然后针对特定数据类型对其进行适当专门化
  • 合同编程的重点是避免直接继承。通常,它将合同接口与多个类的组合实现相结合。
  • 设计模式专注于几乎可在任何环境中实现的高级元设计(模式),尽管它们最常见于OO设计的讨论中。

了解如何在多种范式中构建程序总是有价值的知识。知道如何谈论设计的结构更加挑剔,但最终更有价值。

答案 1 :(得分:3)

MyersYourdon and Constantine复合/结构设计的经典着作中,两个最重要的原则是

  • 耦合(不同模块如何相互关联)

  • 凝聚力(内部如何构建模块)

我同意Mike Burton的说法,广告的作者可能缺乏线索,但你可以轻松地了解“模块耦合”和“模块凝聚力”,如果你能在图书馆得到它们,那么这本书就是值得阅读。我只能在IBM付费网站上找到the original paper

答案 2 :(得分:1)

我总是提到的是1981年10月IEEE电信杂志的G. D. Bergland撰写的一篇古老的文章 - 信不信由你。它大约有13页,为您提供了您需要了解的大部分内容。麻烦的是你可能无法找到它 - 即使在IEEE和即使你是会员。

您可以在亚马逊的Peter Freeman(编辑)找到另一本非常好(虽然陈旧)的“软件设计技巧教程”一书。

http://www.amazon.com/gp/offer-listing/0818605146/ref=dp_olp_0?ie=UTF8&redirect=true&condition=all