We don’t allow questions seeking recommendations for software libraries, tutorials, tools, books, or other off-site resources. You can edit the question so it can be answered with facts and citations.
Closed 5 years ago.
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(8)
你要求喝消防水带里的水。 让我鼓励您在处理大程序之前先编写一些小程序。 然而,这里有一些关于设计的书籍和一篇论文,认为很多设计不能从书本上学到:
论系统设计是一篇很好的短论文,它阐明了许多经验丰富的程序员对设计艺术的看法。
Programming Pearls 提供了一些可爱的示例 <小设计。 这本书读起来很有趣,包含许多经典故事。
Unix 编程环境,由 Kernighan 和 Pike 提出一个20 世纪伟大的软件设计哲学。 近 25 年后仍然需要阅读。
Pascal 中的软件工具 更窄更深入,但会告诉您很多信息关于构建软件工具的细节和设计理念。
程序开发中的抽象和规范(Barbara Liskov 和 John Guttag)将教您如何设计单独的模块,以便它们可以与其他模块配合以形成出色的库。 它已经绝版,但您当地的大学图书馆可能有。
C 接口和实现 呈现一个设计良好的库它为 C 程序员提供了高级语言中的抽象。
最后,测试驱动开发将教您如何通过重要的内容来阐明和开发设计:您的软件实际做什么。
我从 Glenford Myers 的复合/结构化设计中学到了很多东西,但它有一个少一些直接针对您询问的主题。 它主要讨论模块相互依赖的好方法和坏方法。
You are asking to drink from a firehose. Let me encourage you to write some small programs before you tackle big ones. However, here are a few books about design and a paper which argues that a lot of design can't be learned from books:
On System Design is a good short paper that articulates what a lot of experienced programmers think about the art of design.
Programming Pearls by Jon Bentley presents some lovely examples of design in the small. It's a fun read and includes many classic stories.
The Unix Programming Environment by Kernighan and Pike presents one of the great software-design philosophies of the 20th century. Still required reading after almost 25 years.
Software Tools in Pascal is narrower and deeper but will tell you a lot about the specifics of building software tools and the design philosophy.
Abstraction and Specification in Program Development by Barbara Liskov and John Guttag will teach you how to design individual modules so they can fit with other modules to form great libraries. It is out of print but your local University library may have it.
C Interfaces and Implementations presents a very well designed library that gives C programmers the abstractions found in much higher-level languages.
Finally, Test-Driven Development will teach you how to articulate and develop a design through the stuff that matters: what your software actually does.
I learned a lot from Composite/Structured Design by Glenford Myers, but it bears a little less directly on the topics you asked about. It talks primarily about good and bad ways modules can interdepend.
Martin Fowler 的企业应用程序架构
是一本关于常见模式的好书,您将在许多客户端服务器应用程序中看到。
更多关于思考面向对象问题的书是 Eric Evan 的 领域驱动设计:解决复杂性在软件的核心
Martin Fowler's Enterprise-Application-Architecture
is a great book for common pattern's you'll see in a lot of client server applications.
More of a book on thinking about object oriented problems is Eric Evan's Domain-Driven Design: Tackling Complexity in the Heart of Software
我对最近出版的任何一本书都不感兴趣,以至于我正在认真考虑写一本新书。 对我来说,“Head First”书籍通常比“For Dummies”书籍高出一步(公平地说,我还没有读过那本书。)
我实际上很喜欢 Peter Coad 的 Java 设计; 你可以便宜地买到一本,它已经不再印刷了。 显然,它是 Java 的重度,但设计部分很好,而且相当轻量。
Ivar Jacobson 的面向对象的软件工程也非常好(它引入了“用例”等)并且似乎仍在印刷中,但周围有无数的二手副本。
I haven't been thrilled with any of the recent books, so much so that I'm seriously thinking about writing a new one. The "Head First" books generally have read to me ike one step above the "For Dummies" books (to be fair, I haven't read that one.)
I'm actually fond of Peter Coad's Java Design; you can get one cheaply used, it's no longer in print. Obviously, it's Java heavy, but the design part is good, and pretty lightweight.
Ivar Jacobson's Object Oriented Software Engineering is also very good (it introduced the idea of "use cases", among other things) and does appear to still be in print, but there are zillions of used copies around.
我从你的问题中选取了以下关键词:面向对象(建模和编程)、构建桌面应用程序、构建 Web 应用程序和数据库设计。 因为你没有提到任何特定的语言,所以很难为你做出推荐。 所以我假装我是问这个问题并且了解我的人,我向自己推荐:
我提出上述推荐的理由是:
I pick up the following keywords from your question: Object Oriented (modeling and programming), building desktop applications, building web application and database design. Because you didn't mention any specific language, it's very difficult to make a recommendation for you. So I pretend I'm the one asking the question and knowing me, I recommend to myself :
My rational for making the above recommendations:
我很惊讶还没有人提到“四人帮”的设计模式。 这本书真正让我牢牢记住了应该如何真正使用 OO。 前几章对于一个好的系统应该如何运作特别具有启发性。 这不是最容易读的,但我认为这是最好的。 如果您想对同一主题有更轻松的了解,请查看 Head First 设计模式。
I'm suprised no one has mentioned Design Patterns by the "Gang of Four" yet. It is the book that really cemented in my mind how OO should really be used. The first couple chapters are especially enlightening about how things should work in a good system. It's no the easiest read, but I think it's the best. If you want a lighter view of the same subject matter, check out Head First Design Patterns.
对于一本关于如何开发软件的书,我推荐实用程序员 。 对于设计,您可能需要查看面向界面的设计。 代码大全是关于开发软件的“A to Z”参考。 您可能还想考虑 O'Reilly Head First 书籍,尤其是 Head First 面向对象的分析和设计,作为更容易开始的东西。
编辑 我不知道我怎么忘记了鲍勃·马丁,但你也可以阅读 Object Mentor 的任何列表中的任何书籍。 这是他们关于软件设计的部分。 我特别推荐敏捷软件开发:原则、模式和实践 (亚马逊,但这也是对象导师列表上的第二本书)。
For a book on how to develop software I would recommend The Pragmatic Programmer. For design you may want to look at Interface Oriented Design. Code Complete is an "A to Z" reference on developing software. You might also want to consider the O'Reilly Head First books, especially Head First Object-Oriented Analysis and Design, as something a little easier to start with.
EDIT I don't know how I forgot about Bob Martin, but you could also read any of the books that Object Mentor has on any of it's lists. Here is their section on Software Design. In particular I'd recommend Agile Software Development: Principles, Patterns, and Practices (Amazon, but it's also the second book on the Object Mentor list).
几年前,作为一名做过一些 Windows 3.1 编程的程序员,我通过使用开发框架(特别是 Borland 的 Windows 对象库)了解了很多有关面向对象设计的知识。 当时他们的软件包还为他们的数据库引擎提供了一个精心设计的数据库对象库。 如今,所有的数据库内容都是 SQL,这并不适合展示(恕我直言)良好的设计。
因此,我的建议是利用设计良好的对象库对您稍微熟悉的东西进行一些编程。 我不知道该向您指出哪里 - Visual Studio 有点庞大,Office 对象模型有点难以掌握,除非您花一些时间使用它们......
Years ago, as a c programmer who had done some Windows 3.1 programming, I learned a lot about object oriented design by using a development framework, specifically Borland's Object Windows Library. Their package back then also had a well-designed database object library for their database engine. Nowadays, all the database stuff is SQL, which does not lend itself to demonstrating, imho, good design.
So, my advice would be to do some programming of something you're a bit familiar with, making use of a well designed object library. I am not sure where to point you - Visual Studio is kind of huge, the Office object models are a little hard to get your hands around until you've spent some time with them...
您还应该拥有面向对象的分析和设计及其应用程序 - Grady Booch。
对于对 OOAD 感兴趣的人来说这是必备的
You should also have Object Oriented Analysis and Design with applications - Grady Booch.
It's a must have for people interested in OOAD