我认为UML图只有在以比您的代码更高的抽象水平表达某些内容时才有用。
仅出于编写UML的目的而编写UML成为不必要的官僚机构,并使项目和代码对适应性的适应性降低,毫无益处。
例如,一个UML类图显示了包中的所有类,以及它们的所有属性和方法(可以轻松自动生成的东西)根本没有任何价值:与您的代码处于相同的抽象级别。另外,代码肯定会是该信息的更好来源,因为它始终是最新的,并且有可能以更容易知道哪些方法/属性/事物更重要的方式进行记录和组织。
另一方面,如果您的抽象概念比代码中所表达的概念更高,那么在图表上进行记录是一个好主意。
例如,显示复杂系统上较高级别抽象模块的图,以及它们的依赖关系以及对它们的职责的一点描述,以及它们在源代码中映射到的包/名称空间,对于新的团队成员来说确实有用。需要引入到项目中,或者也可以用来确定应该在哪里抛出新的类/功能。
有用图的另一个示例可以是序列图,该序列图显示了在通信协议中要执行的高级步骤。也许这些步骤中的每一步都有一些古怪和复杂性,但是在代码本身中描述它们可能就足够了。更高级别的图表可以帮助程序员轻松地理解事物的“全局”,而无需担心每个交互的复杂性。
无论如何,这些仅仅是一些例子。在很多情况下,简单的图表可能会有所帮助。请记住,仅当您无法在代码本身中表达某些内容时,才应该这样做。如果您发现自己使用UML图来解释源代码本身,请改为使源代码更具自记录性。
最后,一些适用于代码的通用规则也可以适用于图表:避免重复自己,保持简单,不要害怕更改(只是因为UML图表中记录了某些内容并不意味着它不能进行更改),并在编写它们时始终考虑谁会在将来阅读/维护这些图(可能是您的未来自我):)