【问题标题】:Object oriented analysis and real life OOP differences面向对象分析与现实生活中的 OOP 差异
【发布时间】:2009-04-25 17:32:53
【问题描述】:

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

【问题讨论】:

    标签: oop tdd


    【解决方案1】:

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

    TDD 应该让您专注于要解决的问题。在解决问题的同时了解问题的结构这一事实是 TDD 的内在组成部分。不要进入大型的前期分析/设计流程。

    【讨论】:

      【解决方案2】:

      “通常我发现自己将一个类拆分为其他类以分离关注点。我想知道更深入的分析是否会阻止这种情况。我认为大部分 OO 分析无法预测其中一些情况。”

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

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

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

      【讨论】:

        【解决方案3】:

        大多数时候,当我开始一个编程/设计项目时,我不仅对我最初希望它做什么,而且对需求可能演变的一些方向都有一个很好的想法。这推动了初始功能的选择(推动了测试驱动开发),并且可以让我有理由将类拆分为我认为以后有用的方向。

        如果您只是开始从您正在考虑的大量功能列表中随机选择测试用例,那么您的初始类的开发方向也会有些随机。因此,我认为作为一名经验丰富的开发人员,首先要仔细选择方向——不一定要进行大量的正式分析,但至少要凭直觉知道随着项目的发展,哪些功能在架构上会很重要。

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

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

        【讨论】:

          【解决方案4】:

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

          【讨论】:

            猜你喜欢
            • 2010-10-11
            • 2023-03-09
            • 2014-10-05
            • 2010-09-21
            • 1970-01-01
            • 1970-01-01
            • 2012-10-16
            • 1970-01-01
            相关资源
            最近更新 更多