我正在阅读Code Complete(第2版),并在第87页由Bertrand Meyer发现了一个报价。
首先询问系统的功能;问这是做什么的!
迈耶先生试图在这里得到什么。我有一些粗略的想法,但我想确保我真的明白。
答案 0 :(得分:3)
Bertrand Meyer的讲道表明,对系统的合理推理是基于知道系统改变了哪些具体实体;改变的目的是一种新兴财产。......所以这是the second fallacy of teleology - 归因于目标导向 对没有的事情的行为 目标导向,也许没有 把事情想象得充满活力 精神居住,但只有思考,X 发生在Y.“为了” 是心灵语言,即使 它似乎没有公然命名 精神财产,如“可怕”或 “认为它可以飞”。 - Eliezer Yudkowsky,人工智能理论家 关注具有稳定目标系统的自我改进AIs
答案 1 :(得分:2)
我认为这里的重点不在于系统的功能,而在于它运行的数据以及这些操作是什么。
这提供了两个主要的思维转变:
有了这两个“基线”,你就会更好地组织一个系统来实现你的目标,这样就可以很好地理解数据操作并使之有意义。
实际上,他正在奠定基础,能够在你编写的代码上写下“合同”。
答案 2 :(得分:0)
我的观点是,引用是一种在软件中找到良好抽象的方法。此引文旁边的文字涉及查找设计类的真实对象。
一个简单的例子是这样的:
您正在为银行制作软件。由于您的软件正在使用银行帐户,因此应该有一个帐户类。然后,您开始考虑帐户具有哪些属性以及您可以与帐户进行的互动。
当然,如果您尝试建模的对象不像这种情况那样清晰,那么这句话会更有意义。
答案 3 :(得分:0)
从Google搜索中,它选择了Art Gittleman的Computing With C# and the .Net Framework:
Bertrand Meyer举了一个例子 工资计划,产生 来自时间卡的薪水。管理 可能以后想扩展这个程序 产生统计或税收 信息。工资单功能 本身可能需要改为 产生每周检查而不是 例如,双周检查。该 用来实现的程序 原始工资计划需要 改变以做出任何这些 修改。迈耶注意到任何一个 这些薪资计划将会操纵 同样的数据,员工 记录,公司规定等 向前。
专注于更稳定 在这样的系统方面,梅耶说 原则:“先问问不是什么 系统做:问它做什么!“; 和定义:“面向对象 设计是导致的方法 基于Web的软件体系结构 对象每个系统或子系统 操纵(而不是“the” 它的意思是确保)。“
我们今天认为UML的类图和其他OOAD方法是理所当然的,但它是在路上被“发现”的东西。
答案 4 :(得分:0)
“告诉我你的流程图并隐藏你的桌子,我将继续神秘化。告诉我你的桌子,我通常不需要你的流程图;它们会很明显。”
答案 5 :(得分:0)
域驱动设计......了解软件旨在解决的问题。系统操纵什么“域”实体(数据抽象)?它对那些域实体有什么作用?