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

gro*_*kus 3 language-agnostic programming-languages software-design design-principles

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

Mik*_*ton 5

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

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

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


Nor*_*sey 5

在迈尔斯以及尤登和康斯坦丁关于复合/结构化设计的经典著作中,两个最重要的原则是

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

  • 内聚性(模块的内部结构)

我同意 Mike Burton 的观点,即广告的作者可能缺乏线索,但你可以很容易地温习“模块耦合”和“模块内聚”,如果你可以在图书馆找到它们,那么这些书就值得一读。我只能在 IBM 付费网站上找到原始论文。