作为核心开发人员几年,编写应用程序看到类图,序列图,我决定改善自我,采取下一步设计.由于我是OO开发人员,我有兴趣提高我的设计技能.
例如,我很难设计货币转换器.
我对SO的问题:
总之,给定一个问题,我只想以面向对象的方式解决它?
在做好OO设计之前,你必须做坏的OO设计.
一个梦幻般的项目将采用您的货币转换器并慢慢移动代码以使用OO概念.OO是一个创造性的过程:没有错误的答案,但确实存在更糟糕和更好的答案.基本上,当您的代码保留功能并且更短/更容易阅读时,它会更好.当它在不增加更多代码的情况下获得灵活性时,这也会更好.但这是一个创造性的过程.使用像GIT这样的版本控制系统,可以轻松"撤消",尝试填充,并避免误操作.OO设计是一个过程.
- 是否可以通过经验获得设计技能?
是.
- 通过互联网等学习书籍/博客/材料会有帮助吗?
是.
- 是否需要正在开发的应用程序的领域知识?
是的,但我认为太熟悉这个领域可能搞砸了好的设计.在与航空公司程序员合作时,我注意到已知的,无疑的抽象("票证","预订")抑制了良好的OO设计.您的OO模型不是真实世界的模型.这是您的计划的模型.
- 了解设计模式,原则?
是的,总是越多越好.
- 学习"代码完整"一书?
很多人都说这是一本好书.但是,你读过Italo Calvino吗?还是豪尔赫·路易斯·博尔赫斯?各种书籍都有所帮助.
- 需要解决问题的能力吗?
不.您通过应用OO(或任何其他范例)获得解决问题的技能.
很明显,如果您想学习一些东西,就必须练习。如果您想学习如何成为一名更好的程序员,那么练习编程会有所帮助。而且,如果您想学习如何成为一名更好的OO程序员,那么实践OOP显然会为您带来最大的帮助。问题解决能力和领域知识是每个优秀程序员都需要具备的东西,而不仅仅是面向对象编程。而且有很多好书,如果您不是那种“专注于某本书的人”类型的人,它们可能会为您提供帮助。
这是编程书籍的列表。从这个清单中,“设计模式”和“重构”似乎非常关注OOP(我也没有读过“ Head first design pattern”,也许也是)。我认为,我从(OOP,功能和其他概念)中学到的最多的书是“计算机程序的结构和解释”。
总结一下你的观点——我认为 2 - 6 点都很棒,而且我认为任何编写代码的人都应该完整地阅读代码,即使它不是面向对象的。但不幸的是,似乎第1点是最重要的!
我认为这是我们职业中的一个问题。我们在工作中学习,而不是学习优秀的代码。所以本质上每个人都在学习方面重新发明轮子。