【问题标题】:Help with design [closed]帮助设计[关闭]
【发布时间】:2008-12-14 04:22:47
【问题描述】:

我认为我很擅长编程 C# 语法。我现在正在寻找一些资源、书籍(首选)、网站、博客,它们处理设计面向对象的桌面应用程序和 Web 应用程序的最佳方式,尤其是在数据和数据库方面。

谢谢

【问题讨论】:

    标签: oop ooad


    【解决方案1】:

    您要求从消防水管中喝水。让我鼓励您在处理大程序之前编写一些小程序。然而,这里有几本关于设计的书籍和一篇认为很多设计不能从书本中学到的论文:

    • On System Design 是一篇很好的短文,阐明了许多有经验的程序员对设计艺术的看法

    • Programming Pearls by Jon Bentley 展示了一些可爱的小型设计示例。读起来很有趣,包含许多经典故事。

    • The Unix Programming Environment Kernighan 和 Pike 提出了 20 世纪最伟大的软件设计哲学之一。近 25 年后仍然需要阅读。

    • Software Tools in Pascal 更窄更深,但会告诉你很多关于构建软件工具的细节和设计理念。

    • Abstraction and Specification in Program Development by Barbara Liskov 和 John Guttag 将教您如何设计单个模块,以便它们可以与其他模块相适应以形成出色的库。它已绝版,但您当地的大学图书馆可能有。

    • C Interfaces and Implementations 提出了一个设计非常好的库,它为 C 程序员提供了高级语言中的抽象。

    • 最后,Test-Driven Development 将教您如何通过重要的东西来表达和开发设计:您的软件实际上做了什么。

    我从 Glenford Myers 的 Composite/Structured Design 中学到了很多东西,但它与您所询问的主题的直接关系稍差。它主要讨论模块相互依赖的好方法和坏方法

    【讨论】:

      【解决方案2】:

      马丁·福勒的Enterprise-Application-Architecture 是一本关于常见模式的好书,您会在很多客户端服务器应用程序中看到。

      更多关于思​​考面向对象问题的书是 Eric Evan 的Domain-Driven Design: Tackling Complexity in the Heart of Software

      【讨论】:

        【解决方案3】:

        我对最近的任何一本书都不感兴趣,以至于我正在认真考虑写一本新书。 “Head First”的书一般比“For Dummies”的书读得好一点(公平地说,我没有读过那本。)

        我其实很喜欢 Peter Coad 的Java Design;你可以买到便宜的,它不再印刷了。显然,它的 Java 很重,但设计部分很好,而且很轻量级。

        Ivar Jacobson 的 Object Oriented Software Engineering 也非常好(它引入了“用例”等概念)并且似乎仍在印刷中,但周围有数以万计的二手副本。

        【讨论】:

        • 是的,我看过 Head First 这本书,但我没有看到任何关于使用数据库或数据层的内容。
        【解决方案4】:

        我从您的问题中选择了以下关键字:面向对象(建模和编程)、构建桌面应用程序、构建 Web 应用程序和数据库设计。因为你没有提到任何特定的语言,所以很难为你推荐。所以我假装我是问这个问题并且认识我的人,我向自己推荐:

        1. OO:Bruce Eckel 用 C++ 思考或用 Java 思考。
        2. 构建桌面应用程序:Ultimate++
        3. 和网络应用程序开发:http://www.djangoproject.com/
        4. 数据库:我没有什么好的建议。

        我提出上述建议的理由:

        1. 我不想推荐十几本书或更多。您不必全部阅读。
        2. Bruce Eckel 的“思考”书籍可以涵盖主要的 OO 概念,因为您学习一门新语言不会有任何问题,因为这只是语法问题。
        3. Ultimate++ 可以生成最精简的桌面应用程序,并且它们非常积极地使用模板,从而产生非常优雅的代码。与 MFC、WPF、java Swing Java SWT、Python 等相比,使用 U++ 的另一个优点是您的可执行文件没有任何包袱或依赖项。它不需要您的用户安装 JRE、.NET 框架、MFC DLL 或 Python 等。这是我的选择,因此我提出了这个建议。
        4. Django,因为我知道并喜欢 Python,但我不太了解 Ruby。 Ruby 专家会说 RubyOnRails 或 C# 专家会说 ASP MVC。 Java 可能会说 Struts、JSF、Stripes,但我认为 Java 目前没有任何东西可以与 Python、Ruby、C# 甚至 PHP 的框架竞争。

        【讨论】:

          【解决方案5】:

          我很惊讶还没有人提到“四人帮”的设计模式。正是这本书真正巩固了我应该如何真正使用 OO。前几章特别有启发性,说明在一个好的系统中应该如何工作。这不是最简单的阅读,但我认为它是最好的。如果您想更轻松地了解同一主题,请查看 Head First Design Patterns。

          【讨论】:

          • 虽然这本书被称为“设计模式”,但我从未在其中找到太多设计。大约一半的书是优秀程序员使用的技术的概要——对于程序员发展成熟度非常有用。其余的是 C++ 中损坏的东西的解决方法。
          • 本书中的模式适用于所有 OO 语言,并受到 Smalltalk 工作的启发。将它们称为 C++ 中被破坏的东西的解决方法是错过了本书的重点。你说得对,设计并不是一直都在前面,但它存在于模式的原因中。
          • 我发现 Head First Design Pattern 比 GoF 书更有启发性,这对初学者来说有点神秘
          【解决方案6】:

          关于如何开发软件的书,我推荐The Pragmatic Programmer。对于设计,您可能想查看Interface Oriented DesignCode Complete 是关于开发软件的“A 到 Z”参考。您可能还想考虑 O'Reilly Head First 书籍,尤其是 Head First Object-Oriented Analysis and Design,因为它更容易开始。

          编辑我不知道我是怎么忘记 Bob Martin 的,但你也可以阅读 Object Mentor 在其任何列表中的任何书籍。这是他们在Software Design 上的部分。我特别推荐Agile Software Development: Principles, Patterns, and Practices(亚马逊,但它也是对象导师名单上的第二本书)。

          【讨论】:

            【解决方案7】:

            多年前,作为一名做过一些 Windows 3.1 编程的 c 程序员,我通过使用开发框架,特别是 Borland 的 Object Windows Library,学到了很多关于面向对象设计的知识。他们当时的软件包还为他们的数据库引擎提供了一个精心设计的数据库对象库。如今,所有数据库的东西都是 SQL,它不适合展示,恕我直言,好的设计。

            因此,我的建议是使用设计良好的对象库对您有点熟悉的东西进行一些编程。我不知道该向您指出哪里 - Visual Studio 有点庞大,Office 对象模型有点难以掌握,除非您花一些时间使用它们...

            【讨论】:

              【解决方案8】:

              您还应该有面向对象的分析和设计应用程序 - Grady Booch

              对 OOAD 感兴趣的人必须拥有它

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 1970-01-01
                • 2021-06-28
                • 2016-11-13
                • 1970-01-01
                • 2011-01-16
                • 2023-03-22
                • 1970-01-01
                • 2012-04-02
                相关资源
                最近更新 更多