devise模式真的有多重要?

devise模式真的有多重要?

我认为早期的程序员并没有太多的使用devise模式(在80年代和90年代中期gradle的人)。 最近的gradle生是否知道这个问题,并使用更多?

如果你有兴趣,我也做了一个survery,你可以在这里查看:

http://www.surveymonkey.com/s.aspx?sm=kJOdGX0RPx5FGrfPVm_2bmIw_3d_3d

更新:这里是最初的调查结果:

http://img192.imageshack.us/img192/7107/surveyresults.png

我们在80年代使用的devise模式,我们只是不知道他们是devise模式。

在我看来,devise模式最大的一个好处就是它为开发人员提供了一个通用的词汇来讨论软件解决scheme。

如果我说“我们应该使用单例模式来实现”,那么我们有一个共同的参考点来开始讨论这是否是一个好主意,而不必先实际实现这个解决scheme,这样你就知道我的意思了。

增加熟悉常见问题解决scheme的可读性和可维护性,而不是每个开发人员都试图用自己的方式来解决问题。

很重要。 软件可以在没有它们的情况下制造,但是肯定要困难得多。

他们不是绝对需要的,但好的肯定胜过坏的。

好:

  1. 代码可读性:他们确实帮助你用更好的名字来编写更易于理解的代码,用来实现你想要完成的任务。
    • 代码可维护性:让代码更易于维护,因为它更易于理解。
    • 沟通:他们帮助您在程序员之间传达devise目标。
    • 意图:他们将代码的意图立即显示给学习代码的人。
    • 代码重用:它们帮助您确定常见问题的常见解决scheme。
    • 代码less:它们允许你编写更less的代码,因为更多的代码可以从普通的基类中派生出通用的function。
    • 经过testing和完善的解决scheme:大部分devise模式都经过了testing,certificate和合理。

不好:

  1. 额外的间接级别:它们提供了一个额外的间接级别,因此使代码更复杂一些。
    • 知道何时使用它们:它们经常被滥用,并被用于不应该的情况。 一个简单的任务可能不需要使用devise模式解决额外的工作。
    • 不同的解释:人们对devise模式的解读有时会略有不同。 如Ruby on Rails所示,django与MVC所示的MVC示例。
    • 辛格尔顿:我需要多说吗?

就我个人而言,我认为它们大大地过度和边际价值 。 这个想法听起来不错,但是当你深入了解它的时候,实际上只有一小部分是值得记住的(可以记住)。

我想说,他们的净效应是负面的,因为新近迷住了这个概念的人们所做的可怕的过度工程,并试图将尽可能多的模式塞进他们的代码中。 也许更糟糕的是马斯洛的锤子效应导致了糟糕的devise,因为开发人员没有find最佳的devise,而是记住了一个适合(很糟糕)的devise模式。

重要的是我不会使用这个词。 我会用“有帮助”这个词。 为开发人员提供一种共同的语言来描述频繁的问题/解决scheme是非常有用的 – 在协作环境中更是如此

我想你错过了一个devise模式是什么。

在软件工程中,devise模式是软件devise中常见问题的通用可重用解决scheme。

所以devise模式只是一种正式的语言来定义解决软件工程问题的常用方法。 我想大多数人都在使用devise模式而不知道它们是。 所以这些软件问题的常见解决scheme可以追溯到很长的一段时间,他们只是没有提出一个正式的语言来描述他们在做什么。

我认为devise模式非常重要,因为它们教会了如何解决devise模式适用的问题。

我看过太多的“小男孩模式”综合症。 在一个人第一次阅读GoF书的时候,通常会遇到最困难的情况,他们会立即跑掉,看看他们中有多less人可以融入他们正在进行的项目中。 (将所有23个项目都join到一个项目中的额外要点)。它们最终将build立一个系统,在一生之内进行devise,不可能理解或修改。

最终发烧停了下来,足以适当地使用它们。 但是伤害会很大

注意事项是“核心Java EE模式”一书。 它列出了一大堆针对EJB 1.0和2.0的“最佳实践”,现在被认为是反模式。 EJB 3.0规范消除了很多。 spring正在rest。

像UML一样,模式已经在阳光下度过了一天。 但是太阳正在下降。 我不认为任何一个拯救世界或者宣传都是如此。

我发现了边际价值的devise模式。 任何组织良好,devise完善的软件框架都有数以百计的devise模式,很less有正式的“模式文献”被描述。

在devise模式出现之前,有很多devise良好的软件可以在很多情况下重用。 例如,Kernighan和Ritchie关于C的书中包含了一个使用yacc和lex以及堆栈,符号表,函数指针传递(即基本dynamic绑定)实现的计算器的示例,并且包含了大量用于本书大小的模式。

通过阅读例如Microsoft的.NET框架,Java类库等,您可能会学到数百种更有用的devise模式,而不是阅读有关devise模式的书籍。

真的,好的软件有一个devise。 如果devise好,可能会重新使用。 瞧 – devise模式。

虽然有时谈论devise模式可能是有用的,但我倾向于认同在许多情况下认为它们是有害的人。

我想说的主要观点是,他们经常阻止人们针对某个具体问题提出适当的解决scheme。 人们不去考虑如何解决这个特定的问题,而是尝试应用一种devise模式。

他们也倾向于隐瞒语言缺陷。 它们中的很多都是足够expression的语言。 一个最好的例子就是战略模式,它基本上是以一种复杂的方式重新开发函数式编程。 通常人们会更好地了解真正的编程原则,而不仅仅是模式语言。

话虽如此:我宁愿与某人谈论模式,也不愿有一个共同的语言。 如果没有更好的select,那么它们就很重要。 如果我能以更正式的方式解释自己(例如代数),那么我就不再关心模式语言了。 当然有人会声称我只是发明自己的模式语言;-)

好问题! 我一个星期前就问自己这个问题。 我尽可能地使用它们,但是我没有find很多机会来使用它们。 我个人认为,devise模式的想法是伟大的。 机械工程师和电子工程师不是从头开始devise,而是运用良好的理解模式,让新手站在他们前辈所掌握的知识的肩膀上。 devise模式是朝着正确的方向迈出的一步,但需要更多的步骤。

我会说非常

devise模式的诀窍是学习何时何地使用它们 。 然后可以为你做各种各样的事情:

  1. 使您的代码更具可读性
  2. 易于维护
  3. 使其更加灵活
  4. 而这样的例子不胜枚举…

但是有时候,他们可以做一些有益的事情,再次知道如何以及何时…

你有没有试图用框架锤子拉出条子? 你可能会爱你,但如果你试图用这种方式,会引起各种各样的问题…

我认为,当你重构你的代码时,它有时会演变成一种特定的模式,或者你可能一直在使用一种模式而没有意识到它。

我会说他们肯定是重要的。

在典型的原因(共享词汇,不重新发明轮子)中,它们是学习良好软件devise的垫脚石。 大部分的devise模式都是由程序员开始的,他们运用他们所知的解决问题的OO原则,并注意到其他人提出了相同的解决scheme。 如果您将devise模式看作是一本烹饪书来解决当前的问题,那么它们就不是很有用,而这正是您看到“devise模式捶打”出现并使devise复杂化的地方。

如果不把它看作是一个良好的面向对象的devise的窗口,你会开始看到它们是多么有价值,也就是从devise模式背后的原则而不是特定的devise模式本身。

无论您是否知道您正在使用它们,软件模式都很重要。按照定义。

devise模式只是一个广泛的,可重用的解决scheme,以解决一个常见的问题。

你可以破解,直到你重新发明你所遇到的每个问题的解决scheme,或者你可以学习那些程序员已经使用了几代人的“模式”。 如果你对最常见的命名模式的知识正式化,你将有一个共同的词汇来讨论和应用这些解决scheme。

请享用,

罗伯特C. Cartaino

在考虑模式之前,先从原则开始,因为这是总体devise原则,可以通知和激发模式的出现。

为了您的特殊问题,您最好遵循以下原则。 如果你到达了一个着名的模式,那么恭喜你,你刚刚重新发现了一个模式,对你有好处。 问题在于它可能需要很长时间,所以这取决于你是否想要冒险发明一些反模式,或者你是否想要一个已经发布的东西的快捷方式。 考虑一下,因为你会学到的不仅仅是阅读他人对自己作品的描述。

不好的一面(正如许多非常好的答案已经指出的那样)是,你可能会试图将一个已发布的模式应用于不合适或者不合理的情况下。

devise原则的一个好地方就是看鲍伯·马丁叔叔的固体原理 ,一旦他们沉入水中,他们的好处就是你觉得自己已经知道了(这让你感觉很聪明),

叔叔鲍勃的着作“ 清洁代码”也涵盖了许多与一些有用的例子相同的原则,只是没有像原始文章那样明确引用原则,更多地集中在整理和整理你的函数,类等方面。

devise模式在CS的devise课程中教授。 它们并不是必不可less的,但是如果你能find类似的情况来得到一个已经被认真思考的解决scheme,那么它们确实很有用。

它也允许程序员更容易地交stream。 你也可以和你的同事谈谈模式。 如果你在这里说我有我的观察者,那么很明白这是怎么回事。

人们自然会想出适合自己的devise模式的解决scheme,但devise模式有助于定义可能有用的术语和标准想法。

对于这些模式没有什么超乎寻常的地方,最好的事情就是它们是经过反复实践的经典和定义的想法。

评论devise模式是有帮助的,如果你试图贡献开源项目…足够的说!