如何变得擅长于面向对象的分析和设计(OOAD)?


26

成为一名优秀的分析人员和设计师可以极大地使开发人员受益。但这绝对有障碍。并非每个人都对OOAD感兴趣,也不是每个感兴趣的人都知道这条路。一个好的OOAD应该知道多种OO语言吗?还是他/她应该失败的项目?怎样才能成为一个好的OOAD?

Answers:


34

不感兴趣的人正在制造自己的障碍。我不用担心。

对于那些不知道路径的人,我建议:

  • 我发现我学到的每种面向对象语言都使我成为一名更好的面向对象开发人员。只要您找到社区,就可以从每种语言带入很多东西。
  • 您确实从失败中学到了更多,但要尝试自己做。从专业上讲,至少在某些时候,请相信具有更多经验的人,但是不要害怕问“为什么?”。
  • 了解SOLID的所有五项原则,并理解它们为何存在。它们都不是规则,但是当您迷路时它们是很好的指南。
  • 测试驱动开发比我以前学到的任何东西都更多地提高了我的OO设计技能。
  • 在您从设计不足过渡到过度设计,然后找到正确的平衡点(接近后者)之前,您将不是最好的。
  • 实际上,从头开始,您再也无法像两年后那样出色了。
  • 阅读许多书籍和博客,但什么都不做。这个行业仍然没有找到,也可能永远找不到完美的道路。
  • 一定要学习设计模式,但不要寻找使用它们的地方,只需将它们用作交流的促进者即可。

希望其中的一些帮助。


1
好名单@pdr。+1
Saeed Neamati 2011年

5
+1“仍然没有找到,也可能永远找不到完美的道路。”
ocodo 2011年

1
+1“测试驱动开发比我以前学到的其他任何东西都对我的OO设计技能有了更多的改进。”
凯文·克莱恩


感谢我有SOLID讨论一个问题 programmers.stackexchange.com/questions/155852/...
LCJ

5

我认为,为了完全理解 OO模型,您必须具有使用非OO编程技术惨遭失败的经验。您可以从内到外理解OO,但是要欣赏和尊重OO,它必须是一种闪亮的新工具,它可以代替旧的生锈的工具,但后者并不能很好地完成工作。

我自学了7年之后,才终于在大学级别的Java中学习OO。在那之前,我会不断地开发这些项目,而且它们会变得如此庞大,以至于我忘记了到底发生了什么。它们将笨重,杂乱无章,并且需要进行大量维护才能进行较小的更改。基本上,我一直发现自己陷入了代码困境,并且不断地重新开始。

我花了一段时间才从我采用的线性设计中脱颖而出,但是一旦我完全理解了OO模型,就好比Eureka!我能够自己编写更复杂的项目,并且在学习了继承等概念之后,我的工作效率迅速提高。我没有在浪费时间重新编写代码或从头开始,因为客观上一切都有意义,而且只是直观。

我认为每个程序员都应该尽可能多地了解语言。无论他们是否是OO,这将使他们成为经验更丰富的老手。一旦您了解OO,就可以采用这些技术并将其应用于实现的所有地方。

恕我直言,如果您不了解OO或不想学习OO,那么您在人生战场上的装备就会不足。越来越多的公司正在使用更新的OO语言。我看不出有什么理由今天知道面向对象模型。

根据人的学习方式,由他们决定如何学习模型。当有人教我时,我个人学习得最好,所以去Java I和Java II上课对我来说确实有很大的不同。我建议您上大学时选修软件工程选修课,或者如果您无权访问大学课程或不想在业余时间学习,则只是上网并寻找OO教程。

当我回想起对我的描述时,我说:苹果是苹果,橘子是橘子。是的,它们都是从树上掉下来的,但是它们是两种截然不同的果实,而你的和谐就在于此。


1
您是说在功能编程上惨败,还是在程序编程上惨败?
安德鲁·格林

函数式编程失败,但精通失败。我的意思是由于其局限性而未能成功实施。
Styler

因此,您绝对是函数式编程,而不是过程式编程?
Andrew Grimm

非OO编程。
Styler

2
我绝对建议编辑此代码,因为非OO!=可以发挥任何想象力。事情甚至可以兼而有之。
Magus 2014年

0

感兴趣或不感兴趣的人总会有障碍,但是背景和严重性可能会有所不同。

您不必学习多种面向对象概念的语言,而是从一种您喜欢的语言开始,在一段时间内您将在该语言上拥有强大的立足点,将其发布为可行的方法以探索您已完成的一些事情已经尝试使用另一种语言执行相同的操作。一种语言的专业知识可以帮助您切换到新的语言,因为您将获得基准评分。

任何项目都是学习经验,而不是成功,重要的是您对这些功能的适应性如何进行了最佳利用,偶尔阅读其他代码并弄清楚其完成方式和原因非常有用。如果您能找到一位导师,那就太好了。总是知道为什么选择它的原因,以其他方式如何做。尝试使用自己的逻辑和设计模型,然后将其扔给上级/指导者。这样,您将提高自己的技能,也许一开始他们会直接进入垃圾箱,但随后您尝试并了解了自己做错了什么。迭代地,您会越来越好。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.