为什么Ruby开发人员似乎不使用UML?

cal*_*ium 12 ruby uml ruby-on-rails

我总是听说过在Java项目中使用UML但从未在Ruby项目中使用过.这只是一种文化差异,还是在Ruby开发中对建模的需求较少,因为它是更"敏捷"文化的一部分?

Chu*_*uck 36

显然你不能将它概括为每个人,但是像Ruby和Python这样的语言的程序员往往不太习惯大型设计文档和UML,因为他们认为他们选择的语言简洁而富有表现力,并不总是必要的.有一种感觉,"我可以花时间在UML中绘制所有这些...或者我可以编写一些实际实现设计的Python,并用我喜欢阅读的语言表达它,很多人都可以阅读." Java程序往往比Ruby或Python程序感觉"更重" - 它是语言设计的一部分.

请注意,我并不是说这对你的项目是正确的,甚至不是说整个都是如此 - 这正是我对这些编程文化所观察到的.

  • 表达这一点的一种直接方式就是说,如果你的同事需要用你的代码的卡通图来理解它,那么你需要编写更好的代码或聘请更好的同事. (18认同)
  • @Jorg - 我们也可以直截了当地说,如果有人认为代码是理解大型复杂系统所需的唯一东西,那么这个人就没那么多暴露在需要这种类型的建模的系统中.每当我看到人们说代码足以理解系统时,就会出现欢闹和痛苦(并且通常与可怕的编码相关).超过一定的大小,即使代码写得不好,也不可能只依赖代码来理解大型系统.我们已经知道了30年了吗? (3认同)

And*_*ell 20

叫我疯了,但无论应用程序堆栈如何,UML都不适合我.

  • 你不是一个人 ;) (7认同)

Ada*_*nco 14

(注意,舌头有时放在脸颊上.)

可能最大的文化差异之一是Java经常用于拥有大量程序员的项目,由PHB领导,其中高级系统设计由标题为"软件架构师"的人员完成.在这类项目中,"软件架构师"角色中的人员通常会在项目的初始规划阶段生成大量文档(包括UML关系和状态图).然后,这些和其他文档工件预计将由大量非架构师程序员实现.

另一方面,Ruby是新的热点,因此更常被想要在其中编程的人选择.由于"架构师"是实施者,因此对复杂的前期文档的需求较少.实施者会记下关于一般设计指南的一些注释,然后坐下来编程而不是为其他人预先设计编程.

这并不是说你不会在用Ruby或其他时髦语言构建的项目中找到一些分散的UML图 - 比如当有人试图描述一个复杂的概念时 - 但这样的事情只是'如果你自己做这项工作,那就需要多少钱.

  • 有一个故事告诉沃尔特迪斯尼从未使用过故事板.他只是讲述故事,然后与动画师一起工作以实现它.当迪斯尼先生去世时,团队试图继续采用这种方法,因为它非常有效,但发现如果没有故事板,他们就无法工作.他们得出的结论是,他们一直都有故事板,但之前他们已经在沃尔特·迪斯尼亲自体现过. (13认同)
  • @john完全同意这个故事.我通常说"模型或不模型"是错误的问题(http://bit.ly/bOmEl).我们所有人在编码之前总是创建一个系统的心理模型.真正的讨论是使模型显式化的努力是否值得 (3认同)

Jör*_*tag 6

其中一个显而易见的原因是精心设计的Ruby程序严重依赖于Mixins,而AFAIK根本无法用UML建模.我知道Schärli等人开发了UML的扩展,它可以代表Traits,它可以调整Traits和Mixins之间的密切关系,或者只是重复用于表示Mixins,但是它不再是UML了.