4

今天看到一个职位描述,要求“有丰富的C++编码经验和结构化设计原则的透彻基础”,所以我想到了这些原则是什么。一开始我觉得用一句话看C++和“结构化设计”有点奇怪,然后我想,好吧C++是一种多范式编程语言,所以它可能像C一样使用。我还查了维基百科页面并阅读关于异常处理和状态机是反结构化设计(不足为奇),但我仍然觉得缺少很多东西。所以我问你,最重要的结构化软件设计原则是什么?

4

3 回答 3

5

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

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

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

于 2010-01-26T21:51:35.137 回答
4

Myers以及Yourdon 和 Constantine的经典复合/结构设计著作中,两个最重要的原则是

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

  • 内聚(模块内部结构)

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

于 2010-01-27T02:30:12.387 回答
1

我经常提到的是贝尔电话实验室的 GD Bergland 于 1981 年 10 月在 IEEE Micro Magazine 上发表的一篇古老文章——信不信由你。它大约有 13 页长,为您提供了您需要知道的大部分内容。麻烦的是你可能找不到它——即使在 IEEE 和即使你是会员。

您可以在 Amazon 上找到 Peter Freeman(编辑)的另一本非常好的(虽然很旧)书“软件设计技术教程”。

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

于 2011-01-24T00:00:32.803 回答