如何构建面向对象的技能?

jai*_*jai 12 oop

作为核心开发人员几年,编写应用程序看到类图,序列图,我决定改善自我,采取下一步设计.由于我是OO开发人员,我有兴趣提高我的设计技能.

例如,我很难设计货币转换器.

我对SO的问题:

  • 是否可以通过经验获得设计技能?
  • 通过互联网等学习书籍/博客/材料会有帮助吗?
  • 是否需要正在开发的应用程序的领域知识?
  • 了解设计模式,原则?
  • 学习"代码完整"一书?
  • 需要解决问题的能力吗?

总之,给定一个问题,我只想以面向对象的方式解决它?

Dan*_*ark 9

在做好OO设计之前,你必须做坏的OO设计.

一个梦幻般的项目将采用您的货币转换器并慢慢移动代码以使用OO概念.OO是一个创造性的过程:没有错误的答案,但确实存在更糟糕和更好的答案.基本上,当您的代码保留功能并且更短/更容易阅读时,它会更好.当它在不增加更多代码的情况下获得灵活性时,这也会更好.但这是一个创造性的过程.使用像GIT这样的版本控制系统,可以轻松"撤消",尝试填充,并避免误操作.OO设计是一个过程.

  • 是否可以通过经验获得设计技能?

是.

  • 通过互联网等学习书籍/博客/材料会有帮助吗?

是.

  • 是否需要正在开发的应用程序的领域知识?

是的,但我认为太熟悉这个领域可能搞砸了好的设计.在与航空公司程序员合作时,我注意到已知的,无疑的抽象("票证","预订")抑制了良好的OO设计.您的OO模型不是真实世界的模型.这是您的计划的模型.

  • 了解设计模式,原则?

是的,总是越多越好.

  • 学习"代码完整"一书?

很多人都说这是一本好书.但是,你读过Italo Calvino吗?还是豪尔赫·路易斯·博尔赫斯?各种书籍都有所帮助.

  • 需要解决问题的能力吗?

不.您通过应用OO(或任何其他范例)获得解决问题的技能.


Doc*_*own 5

很明显,如果您想学习一些东西,就必须练习。如果您想学习如何成为一名更好的程序员,那么练习编程会有所帮助。而且,如果您想学习如何成为一名更好的OO程序员,那么实践OOP显然会为您带来最大的帮助。问题解决能力和领域知识是每个优秀程序员都需要具备的东西,而不仅仅是面向对象编程。而且有很多好书,如果您不是那种“专注于某本书的人”类型的人,它们可能会为您提供帮助。

是编程书籍的列表。从这个清单中,“设计模式”和“重构”似乎非常关注OOP(我也没有读过“ Head first design pattern”,也许也是)。我认为,我从(OOP,功能和其他概念)中学到的最多的书是“计算机程序的结构和解释”。


Rob*_*boy 0

总结一下你的观点——我认为 2 - 6 点都很棒,而且我认为任何编写代码的人都应该完整地阅读代码,即使它不是面向对象的。但不幸的是,似乎第1点是最重要的!

我认为这是我们职业中的一个问题。我们在工作中学习,而不是学习优秀的代码。所以本质上每个人都在学习方面重新发明轮子。