【问题标题】:How to become a good at Technical Design [closed]如何成为一名擅长技术设计的人 [关闭]
【发布时间】:2009-07-02 08:20:27
【问题描述】:

想知道程序员应该知道什么才能成为擅长设计,特别是 Java/J2EE 技术。

【问题讨论】:

    标签: designer


    【解决方案1】:

    首先,好的设计超越了您选择用于实现设计的任何语言。好的软件设计是关于管理复杂性以创建易于理解且健壮且可维护的代码。重点是

    1. 您可以随时以最高级别的抽象工作
    2. 封装和隐藏复杂区域
    3. 了解清晰一致的命名有何价值

    在我看来,好的设计是通过对良好实践的理解和创造性的结合来实现的。以我的经验,设计中最困难的部分是将问题正确的功能分解为更小的子问题。重要的是要理解实现这种分解的过程几乎总是一个迭代过程,而不是一个有条不紊的自上而下的过程。您必须准备好修改或丢弃之前的设计分解,直到您拥有可维护的东西。

    很难谈论好的设计,更不用说两件事了

    1. 面向对象的程序
    2. 设计模式

    虽然有些语言是面向对象的,但有些语言是纯粹基于对象的,而其他语言(如 C)是在基于对象的设计广泛传播之前创建的,但这些原则和实践可以应用于任何语言。我编写的大部分代码都是用 C 语言编写的,并且我尝试尽可能使用类似对象的做法。

    设计模式为常见问题提供了良好的解决方案,并为这些解决方案命名。我发现对设计模式的研究是理解优秀设计可以实现什么的关键。

    【讨论】:

      【解决方案2】:

      要开始了解设计,您可能应该首先编写一些玩具项目。写下来,偶尔退后一步,反思,回去重写。起泡、冲洗并重复。

      在设计中犯错误是了解下一次应该如何做得更好的最佳方式。当然,您应该了解一些方法,其中最重要的是哪些模式和信息隐藏。除此之外,还有各种软件架构的资源/书籍。例如:软件架构实践(第 2 版)(软件工程中的 SEI 系列),作者:Len Bass、Paul Clements 和 Rick Kazman

      尝试仔细查看信息所属的位置。对于(一个小)示例,利率是否应该是 Account 或 AccountType 中的字段。

      最后但同样重要的是,尝试让自己参与有关设计的讨论。与您的同龄人辩论,但也要挑选更有经验的设计师/建筑师的大脑。

      并保持批判性!尽管软件设计比建筑设计更具有(某些)明显的利弊,但品味/偏好和修辞仍然是交易的一部分。

      【讨论】:

        【解决方案3】:

        我会推荐几件事:

        • 阅读一些设计模式。最初的 Gang of Four 书有助于 OO 设计。如果您正在编写企业应用程序,我不能向 Martin Fowlers Enterprise Application Architecture 推荐太多书籍。

        模式为您提供了向自己和他人描述设计的基本词汇。只需阅读不同的方法,您就会看到新的可能性。如果您正在研究 J2EE,像 Inversion of Control 这样的模式是必不可少的。

        • 沉迷于松散耦合

        良好设计的基本要素是防止紧密耦合。任何可用于将代码移入松散耦合层的方法都将有助于您的整体设计。

        • 阅读其他人的代码。研究您所在技术领域的一些知名开源代码。

        与杂乱无章的Big Ball Of Mud 方法相比,快速学习其他人的代码会让您感觉设计美观。

        【讨论】:

          猜你喜欢
          • 2013-10-19
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-08-18
          • 1970-01-01
          • 2015-01-08
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多