代码之家  ›  专栏  ›  技术社区  ›  Lee Olayvar

程序结构设计工具(自上而下设计)

  •  7
  • Lee Olayvar  · 技术社区  · 16 年前

    所以在这一点上,以一种语言不可知的方式,有什么有用的工具吗 (可能) 好 同时使用Python和Java(我的两种主要语言)。

    4 回复  |  直到 16 年前
        1
  •  1
  •   Gabriel Ščerbák    16 年前

    这真是个好问题。一般来说,BDD、TDD和敏捷并不是说你不能做前期设计,他们只是说不要设计得超出你的需要——尽可能推迟任何决定。我相信有一套工具,你知道,这正是用于这一点,它被称为UML:)。你暗示努力方面是完全正确的。只要UML图只是图片,它们就成了开发过程中丢弃的浪费和维护负担,这时事情可能会迅速变化。但是,您可以使用一些CASE工具,它将允许您(在几个月之后)swearing:D...)要创建图表,可以用来生成代码,当您需要在模型级别更改某些内容时,只需更改图表并重新生成(这实际上需要一些架构和预先工作,请查看一些模型驱动的方法)。我认为在这方面是最好的,中间会有些东西。它将使您能够轻松地建模(绘制和维护图表、流程图、状态机……),并允许您生成代码。我认为最好的方法是(外部)领域特定的语言。 我在硕士论文中的目标是创建一组多个DSL,这将使您能够以BDD方式描述与应用程序的交互,但将允许您不仅生成Cucumber之类的测试,还可以生成(部分)应用程序布局(显然,如果您想在某个页面上看到按钮,在那个页面上你想有那个按钮。您还可以与一些域对象进行交互,这些对象可以根据使用的体系结构进行建模,例如在域驱动的设计样式中。我认为这是相当现实的,它真的支付模型然后。对于自顶向下的设计,您需要某种抽象来从上到下移动,因此一些预先设计是必要的。

        2
  •  1
  •   neuro    16 年前

    好吧,那件事我给你2美分。我同意Gabriel的说法,他说UML是你要找的工具。UML的名字表明它是一种语言来为你的应用程序建模。我也同意Dror的观点,他说当你开始重构代码时,很多设计工具都会失败。试图让图表遵循代码是一种痛苦。你有两个主要的可能性:

    • 使用UML和UML工具设计高级应用程序架构或主要模块。它有助于把大局放在心上,突出你可能遇到的主要问题。当您开始编码时;重构,不要试图使你的图表更新。忘了他们吧。您可以在设计的下一个大型迭代中返回到它们。
    • Borland Together . (我很久没用了……)

    • 在设计之前,指定您的需求(用例、用户案例、需求,以及您喜欢的任何方法)。
    • 你所使用的工具必须被任何从事这个项目的人所理解。如果从事项目的团队对这些工具没有清晰的理解,那么使用它们将适得其反。我曾经尝试过一起使用工具,因为它可以与习惯于UML设计的人一起使用,而与不习惯这种工具的人一起使用就失败了。

      my2c型

        3
  •  1
  •   bitc    16 年前

    研究方法论 Divide and conquer 很直截了当:

    • 把问题分解成子问题。递归地这样做,直到这些变得足够简单,可以直接求解。

    • 保持整洁。让一个函数/方法只有一个目的。一个长而复杂的函数很好地表明您需要进一步分解它。

    重构就变成了寻找和删除重复代码的过程。如果你还没有任何函数式编程的经验,你至少应该尝试一下学习经验。你会发现这种思维方式有助于做好自上而下的设计。


    单元测试就是要了解您的依赖关系。你将学会永远不要有一个全局状态(甚至不是单例),并使用 依赖注入 .

    这使得您的代码易于测试,因为您可以很容易地测试一个单独的类!如果没有这种技术,您的单元测试最终将变得过于复杂,因为它们不仅测试类本身,而且还测试 它的依赖关系。。。

    如果你有一小时的时间,我强烈推荐这个 Google Design Tech Talk: OO Design for Testability .

        4
  •  0
  •   Dror Helper    16 年前

    我不想这么说,但是您可能需要做完全相反的事情—不要预先设计整个系统,而是使用TDD/BDD,您的测试将驱动设计。

    推荐文章