oop - 当您单独设计对象模型时,您使用什么技术?

标签 oop tdd

因此,毫无疑问,我认为当您作为团队来构建领域模型时,效果最好。甚至让非技术人员和“业务”成员参与建模 session 。当你把合适的人放在一个房间里并在白板上敲定事情时,很多事情可以很快完成。但是当你没有那么奢侈的时候呢?当您必须单独构建复杂的领域模型时该怎么办?我在过去一个月左右的时间里一直在这样做,并做了以下工作:

  1. 从名词识别开始,然后使用类-角色-协作来分析关系
  2. 寻找可用于优化模型、派对等的分析模式。
  3. 一旦掌握了基础知识,我就会启动 IDE 并开始编写 XUnit 测试,以表明该模型可以让我做我想做的事情

虽然这些技术运作良好,但我不确定它们是否与真正的协作工作一样有效。我认为人们很容易被一个概念冲昏头脑,后来才意识到它违反了 x 或 y 的要求。在单独工作时,您使用了哪些技术来确保您的对象/域模型达到目标?

最佳答案

我认为每个人的做法都不同,但是......

我几乎总是从类图开始(通常是类似于 UML 的纸质图),特别注意类之间的关系及其数量。此阶段的验证主要是尝试了解实体的高级语义在一起是否有意义。

然后开始勾画关键功能,尤其是涉及协作的功能。确保协作中的对象可以通过关系相互联系。在此阶段,我将使用绘图工具 (StarUML)。

然后是 gedanken 实验。我在心里浏览了我能想到的最棘手的用例,看看我是否可以设想一种方法来通过给定的设计来解决它们。这不是伪代码,只是单步执行每个主要任务/函数并遵循图表的线条,以确保我没有丢失回调、循环依赖项等。

我认为关键是不要过于关注设计的任何特定方面,直到您确信它可能会工作得相当好。在我看来,如果您无法在心里逐步完成设计来评估/验证它,那么您要么对问题缺乏了解,要么纸上的设计不够完整......

然后,如果时间允许,将其放在一边,看看是否能想出一些真正不同的东西......

关于oop - 当您单独设计对象模型时,您使用什么技术?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/188843/

相关文章:

python - 如何在不显示我的 matplotlib 图表的情况下运行 nosetests?

java - 为什么 assertEquals(new Object[] {"abc"}, new Object[] {"abc"});不失败?

c++ - 对 vtable 的 undefined reference (出于想法)

javascript - 未捕获的类型错误 : proxy set handler returned false for property '"length"'

oop - 什么时候类(class)太大或太小?

oop - 使用浅绑定(bind)时的输出是什么?

c# - 对接口(interface)存储库进行单元测试的目的是什么

unit-testing - 最大化测试覆盖率并最小化重叠/重复

unit-testing - 单元测试成为 TDD 的集成测试

java - 最终变量的理解