2

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

4

3 回答 3

3

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

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

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

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

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

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

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

于 2009-07-02T08:28:03.823 回答
0

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

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

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

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

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

于 2009-07-02T09:00:46.690 回答
0

我会推荐几件事:

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

模式为您提供了向自己和他人描述设计的基本词汇。只需阅读不同的方法,您就会看到新的可能性。如果您正在研究 J2EE,那么控制反转等模式是必不可少的。

  • 沉迷于松散耦合

良好设计的要素是防止紧密耦合。任何可用于将代码移动到松散耦合层的东西都将有助于您的整体设计。

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

与杂乱无章的 Big Ball Of Mud方法相比,只需快速研究其他人的代码就可以让您感觉设计美观。

于 2009-07-02T09:10:55.623 回答