【发布时间】:2009-07-02 08:20:27
【问题描述】:
想知道程序员应该知道什么才能成为擅长设计,特别是 Java/J2EE 技术。
【问题讨论】:
标签: designer
想知道程序员应该知道什么才能成为擅长设计,特别是 Java/J2EE 技术。
【问题讨论】:
标签: designer
首先,好的设计超越了您选择用于实现设计的任何语言。好的软件设计是关于管理复杂性以创建易于理解且健壮且可维护的代码。重点是
在我看来,好的设计是通过对良好实践的理解和创造性的结合来实现的。以我的经验,设计中最困难的部分是将问题正确的功能分解为更小的子问题。重要的是要理解实现这种分解的过程几乎总是一个迭代过程,而不是一个有条不紊的自上而下的过程。您必须准备好修改或丢弃之前的设计分解,直到您拥有可维护的东西。
很难谈论好的设计,更不用说两件事了
虽然有些语言是面向对象的,但有些语言是纯粹基于对象的,而其他语言(如 C)是在基于对象的设计广泛传播之前创建的,但这些原则和实践可以应用于任何语言。我编写的大部分代码都是用 C 语言编写的,并且我尝试尽可能使用类似对象的做法。
设计模式为常见问题提供了良好的解决方案,并为这些解决方案命名。我发现对设计模式的研究是理解优秀设计可以实现什么的关键。
【讨论】:
要开始了解设计,您可能应该首先编写一些玩具项目。写下来,偶尔退后一步,反思,回去重写。起泡、冲洗并重复。
在设计中犯错误是了解下一次应该如何做得更好的最佳方式。当然,您应该了解一些方法,其中最重要的是哪些模式和信息隐藏。除此之外,还有各种软件架构的资源/书籍。例如:软件架构实践(第 2 版)(软件工程中的 SEI 系列),作者:Len Bass、Paul Clements 和 Rick Kazman
尝试仔细查看信息所属的位置。对于(一个小)示例,利率是否应该是 Account 或 AccountType 中的字段。
最后但同样重要的是,尝试让自己参与有关设计的讨论。与您的同龄人辩论,但也要挑选更有经验的设计师/建筑师的大脑。
并保持批判性!尽管软件设计比建筑设计更具有(某些)明显的利弊,但品味/偏好和修辞仍然是交易的一部分。
【讨论】:
我会推荐几件事:
模式为您提供了向自己和他人描述设计的基本词汇。只需阅读不同的方法,您就会看到新的可能性。如果您正在研究 J2EE,像 Inversion of Control 这样的模式是必不可少的。
良好设计的基本要素是防止紧密耦合。任何可用于将代码移入松散耦合层的方法都将有助于您的整体设计。
与杂乱无章的Big Ball Of Mud 方法相比,快速学习其他人的代码会让您感觉设计美观。
【讨论】: