面向对象的分析和现实生活中的OOP差异

时间:2009-04-25 17:32:53

标签: oop tdd

在开始编码之前,我通常会尝试使用没有太多分析(没有图表)的TDD。通常我发现自己将一个班级分成其他类来分开关注点。我想知道更深入的分析是否会阻止这种情况。我认为大部分的OO分析无法预测其中的一些案例。你觉得怎么样?

4 个答案:

答案 0 :(得分:4)

对我来说,分类通常是学习过程的一部分。无论是问题领域还是编码过程。通常我会在编码时这样做。有时我会把一两个同事带到白板上讨论事情。

TDD应该让您专注于您尝试解决的问题。当您解决问题时,您正在了解问题的结构,这是TDD的一个固有部分。不要进入大型的前期分析/设计过程。

答案 1 :(得分:2)

“通常我发现自己将一个班级分成其他类来分离问题。我想知道更深层次的分析是否会阻止这种情况。我认为大部分的OO分析无法预测其中的一些案例。”

我在这方面有类似的经历。 TDD确实可以帮助您更好地设计类 我没有进入A& D.

但是,我发现之前的分析很有帮助。这就像通过分析布置基础,然后在编码时获得详细的设计。

某些事情只需从更大的角度来看待。

答案 2 :(得分:1)

大多数时候,当我开始编程/设计项目时,我不仅知道我最初想要它做什么,而且还有一些需求可能会发展的方向。这推动了初始功能的选择(推动了测试驱动开发),并且可以为我提供一个借口,让我在一个我认为以后会有用的方向上拆分类。

如果您只是从您正在考虑的大量功能中随机选择测试用例,那么初始类的开发方向也会有些随机。因此,我认为作为一名经验丰富的开发人员的一部分是开始时仔细选择方向 - 不一定需要进行大量的正式分析,但至少本能地了解随着项目的发展,哪些功能在架构上会起作用。

XP和TDD的一个要点是,您不希望在初始要求未要求的功能和方向上花费太多时间,因为客户在看到什么时会改变主意你到目前为止已经完成了,所以你不想花太多时间思考它。但是,作为开发人员发展自己的技能和直觉的一部分是锻炼和提高你预测哪些未公开可能在以后变得重要的能力。

OTOH,XP和重构的承诺是,当需求推动你朝这个方向发展时,你可以解决问题初始分解中的问题。我认为这是真的,但你仍然可以成为一个更有价值的贡献者,你可以在第一时间做出正确的决定。让它看起来像运气 - “测试迫使我以这种方式考虑因素”是技能的一部分。

答案 3 :(得分:0)

我认为预先规划好很多类结构(以及所有不同的接口)在面向对象的设计/编程中非常重要。在潜入代码之前,你几乎找不到任何关于这个主题的书籍,这些书籍不会首先使用UML和其他建模方法来规划设计。