使用序列图进行java编码 3 周,2 日 Questions & Answers 1479 当我在大学时,一位讲师说有些人是如何使用序列图编码的,在我看来,这似乎是一种很好的编程方式,但问题当然出在细节上。我有几个问题 这是真的发生了还是我 误解了他的话李> 有 有人真的这么做了吗李> 它更有效率吗李> 缺点是什么李> 使用Java时需要哪些工具李>
# 1 楼答案 我发现序列图不适合实际应用,因为: 当只有一个控制线程时,我可以用一个英文提纲很好地解释从一层到另一层的调用层次结构。MS Word中的大纲样式在这里很好 我的英语解释比UML图片更详细,占用的空间更少 与序列图相比,我能用英语更好地解释其他细节,如保护条件和循环 我写大纲比写UML要快 如果你真的需要一张有这么多细节的“图片”,也许一张活动图就可以了 另一方面,序列图对于高级概述来说是很好的 就Java而言,我的项目团队非常喜欢Jude,因为它可以对Java 5代码库的类层次结构进行反向工程
# 3 楼答案 序列图将显示一个交互,通常是通过代码的单一路径。另一方面,你的代码必须定义每一条路径、每一个if-then-else和边条件等。你可以在序列图上显示所有这些内容,但它们往往过于复杂和笨拙。如果序列图对您有用,我建议您在设计阶段使用序列图来帮助可视化代码,但这可能是您应该做的
# 4 楼答案 我发现“正常”序列图几乎总是比它们的价值更痛苦(尽管我发现它们对于在LINQ中显示数据流很有用)。根据我的经验,做一个“粗略且准备就绪”的图表并解释(最好是面对面,但无论哪种方式都要有大量的文字)效果更好 我认为最好有一个(或多个)图表来显示应用程序的某种“垂直部分”——每一层如何与另一层对话,并可能在适当的情况下显示请求/响应的过程。然而,这不需要是“单独的方法调用,并且总是100%准确”的级别——如果读者能够深入了解真正的代码,那么确保传达正确的总体印象更为重要 说到这里,我对UML的看法大体上是一样的,所以如果你非常喜欢精确的图表,总是小心翼翼地与现实保持同步,等等,那就不要客气了:)
# 6 楼答案 序列图有自己的位置。我从来没有担心过让UML图与代码更改保持同步。尽管如此,我非常喜欢使用序列图作为头脑风暴工具。您希望您的团队理解并同意基本流程和通话结构。当你还跟踪参数和实例创建时,它可以突出你理解中的漏洞。如果需要数据'x'作为参数,它可能已经是本地的,或者需要传入,“我们正在从数据库请求报告数据,它需要我们发送报告类型,我们记得将其作为传入参数,对吗 这适用于设计的高级别传递。之后,它可以作为后来者的通用文档。他们会明白你要去哪里,当他们看到代码时,他们不会被这些变化弄糊涂
# 1 楼答案
我发现序列图不适合实际应用,因为:
当只有一个控制线程时,我可以用一个英文提纲很好地解释从一层到另一层的调用层次结构。MS Word中的大纲样式在这里很好
我的英语解释比UML图片更详细,占用的空间更少
与序列图相比,我能用英语更好地解释其他细节,如保护条件和循环
我写大纲比写UML要快
如果你真的需要一张有这么多细节的“图片”,也许一张活动图就可以了
另一方面,序列图对于高级概述来说是很好的
就Java而言,我的项目团队非常喜欢Jude,因为它可以对Java 5代码库的类层次结构进行反向工程
# 2 楼答案
序列图适用于过程语言。它们对OO语言没有那么有用
# 3 楼答案
序列图将显示一个交互,通常是通过代码的单一路径。另一方面,你的代码必须定义每一条路径、每一个if-then-else和边条件等。你可以在序列图上显示所有这些内容,但它们往往过于复杂和笨拙。如果序列图对您有用,我建议您在设计阶段使用序列图来帮助可视化代码,但这可能是您应该做的
# 4 楼答案
我发现“正常”序列图几乎总是比它们的价值更痛苦(尽管我发现它们对于在LINQ中显示数据流很有用)。根据我的经验,做一个“粗略且准备就绪”的图表并解释(最好是面对面,但无论哪种方式都要有大量的文字)效果更好
我认为最好有一个(或多个)图表来显示应用程序的某种“垂直部分”——每一层如何与另一层对话,并可能在适当的情况下显示请求/响应的过程。然而,这不需要是“单独的方法调用,并且总是100%准确”的级别——如果读者能够深入了解真正的代码,那么确保传达正确的总体印象更为重要
说到这里,我对UML的看法大体上是一样的,所以如果你非常喜欢精确的图表,总是小心翼翼地与现实保持同步,等等,那就不要客气了:)
# 5 楼答案
我认为序列图是可视化复杂的多线程程序的最好方法之一,在线程之间传递大量消息。我在设计中不太使用它们,但有时它们是调试的最佳方式
# 6 楼答案
序列图有自己的位置。我从来没有担心过让UML图与代码更改保持同步。尽管如此,我非常喜欢使用序列图作为头脑风暴工具。您希望您的团队理解并同意基本流程和通话结构。当你还跟踪参数和实例创建时,它可以突出你理解中的漏洞。如果需要数据'x'作为参数,它可能已经是本地的,或者需要传入,“我们正在从数据库请求报告数据,它需要我们发送报告类型,我们记得将其作为传入参数,对吗
这适用于设计的高级别传递。之后,它可以作为后来者的通用文档。他们会明白你要去哪里,当他们看到代码时,他们不会被这些变化弄糊涂