我正在努力成为一名优秀的OO开发人员。 OO引起了我的兴趣,因为我理解了这些模式,知道为什么组合会给你更多的灵活性,然后继承,更多的是这样的智慧。但是,我得出的结论是,我知道如何实现单例工厂,但我不知道如何提出强大的OO设计。
我有一堆书
它们可能是非常好的书,但它们并不教你构建应用程序。我经常因一些非常基本的决定而瘫痪(example)。我正在寻找一本教导何时和为什么的书。有很多关于锤子和钉子的书籍,但我还没有找到一本书,告诉你他们的实际关系。
哪本书最能帮助你成为一名自信的OO建筑师/设计师?
答案 0 :(得分:8)
关于面向对象的大多数基础工作都已发布。对于每个“面向对象”的程序员来说,这绝对是必须的。
2。 Grady Booch等人的“Object-Oriented Analysis and Design with Applications”
不像Meyer的书那么正式,但本书可以让你睁大眼睛看看面向对象世界和一般软件开发中的许多问题
3。 Erich Gamma等人的“Design Patterns: Elements of Reusable Object-Oriented Software”
这是着名的“四人帮”关于设计模式的书
4。 马丁福勒等人的“Refactoring: Improving the Design of Existing Code”
这是另一本经典着作。第一部分完美地描述了现代软件开发人员在工作中可能遇到的许多问题:代码气味,可读性与性能,过早的优化缺陷以及许多其他主题。
5。 布鲁斯·埃克尔的“Thinking in Java”
这本书不仅可以帮助许多初学者学习Java语言,还可以帮助很多面向对象的思维方式。
6。 Bertrand Meyer的“Touch of Class: Learning to Program Well with Objects and Contracts”
着名作家的优秀教科书。
答案 1 :(得分:7)
我读过的关于OO的最好的书是Bertrand Meyer Object Oriented Software Construction。
它很大但对我来说非常有用。它涵盖了OO设计IMVHO的每一个方面。
答案 2 :(得分:3)
我完全理解你的情况。还拥有其中三本书;)我建议使用Head First版本。面向对象的分析与设计。这将使您走上正确的轨道。 GoF书很棒但是没有用,直到你掌握了基本知识并且Head First书籍将会解决这个问题。干杯:)
答案 3 :(得分:2)
实际上,编程比阅读编程更有帮助。
“被一些非常基本的决定瘫痪”是一个更深层次问题的症状 - 过度工程化。在你构建很多东西之前,你并不真正知道哪些决定很重要,哪些决定无关紧要。获得必要经验的最佳方法是建立很多东西。
Code Kata非常非常重要。 http://slott-softwarearchitect.blogspot.com/search/label/code-kata
另外,我收集了一堆代码kata,我将其用于单个大型项目中。 http://homepage.mac.com/s_lott/books/oodesign.html
答案 4 :(得分:2)
Robert C. Martin“敏捷软件开发:原则,模式和实践”,向您解释OO的原理
Eric Evans:“领域驱动设计”涉及如何制作与您的业务问题相对应的优秀设计Martin Fowler:“企业应用程序架构模式”,用于企业架构的基本原则
答案 5 :(得分:2)
老歌但好东西。
答案 6 :(得分:1)
找出设计是否健全的唯一方法是实现它。没有一本书可以教你如何制作可实施的设计,它归结为经验和才能。然而,我对Bertrand Meyer的书进行了第二次投票 - 只要知道它不会让你成为OO设计之神。
答案 7 :(得分:1)
Craig Larman的Applying UML and Patterns总结了很多关于我从经验中学到的东西。我喜欢它的是它解决了软件设计的所有方面 - 包括迭代设计和开发等。不要过分强调使用UML:设计描述是达到目的的手段,我发现Larman的方法相当务实。你不能只是编码:你必须传达你的意图(并了解需要什么)。 UML和设计简洁,注释良好的代码是实现这一目标的一些手段。
当然,正如其他人所说:没有一本书会让你成为一名优秀的开发人员或设计师。但它可能有助于加快这一进程。
答案 8 :(得分:1)
首先,我建议Head First Object Oriented Analysis and Design。 它指导您使用简单直观的逐步方法构建OO应用程序。
答案 9 :(得分:0)
虽然倾向于Rational UP,但我发现这两个提供了很多关于OO设计的见解。