游击队的指导来面试的 乔尔说的那些家伙们谁想要把事情做好,但不能将做愚蠢的事情,如使用一个访客设计的模式,其中一个简单的数组就足够了。

我觉得很难测,如果设计模式的建议 四人帮 应该以应用。

因此,我的一些例子从你的工作经验

  • 当是一个简单的方法(固定的尺寸阵列)足够吗?
  • 什么是最小的一个软件,证明使用GoF的模式?
  • 当重构,从简单的思想来GoF?这样做可以在一个明智的方法?
有帮助吗?

解决方案

我经常发现,使用的测试驱动的发展有助于指导我当面临这些问题。

  • 当是一个简单的方法 足够吗? 它始终是足够的 使用最简单的方法来获得 下一个测试通过。但我们知道 当/如何"重构"是真正的艺术 形式。
  • 什么是最小的一个 软件,证明 使用的GoF的模式? 一个规则 拇指有一次我读的是当你 代码什么一次,好的,当你 重复代码的地方一个 第二次,记和移动 上。当你找到一个需要 相同的代码三分之一的时间,它是时候 重构,以删除重复和 简化,并且往往涉及 移动到设计图案。
  • 时 "重构"从头脑简单的要GoF? 我喜欢什么@anopres说-这是 的时候你感觉到痛苦 具有的设计图案。痛苦(或代码"闻")可能 体现在几个方面。代码重复最多的 显而易见的。重构类似的书 Fowler 重构 或 Kerievsky的 重构 模式 列表中的许多这样的痛苦 点/标臭味.
  • 可以这样 [重构]可做一个明智的 方式? 的伎俩,以重组来 有一套单元的测试,在地方 你有信心, 然后重构,而不会造成任何 这些测试失败。重构,通过的定义,不 改变的功能 代码。因此,如果你的测试 继续传,你可以有一个 很好感觉,你没有 破坏任何东西。虽然它可能是困难的,我实际上享受这部分的使用,这是几乎像一个游戏做变动不违反任何测试。

总之,我要说的是,TDD有助于引导我写的代码这就是足够的时间,也许更重要的是帮助我做的更改后,当不可避免地需求的变化,更多的功能需要,等等。

其他提示

设计模式的结果,而不是一个目标。你不认为 今天,我应使用战略模式, 你只要做到这一点。一半通过这样做的第三个几乎完全相同的类您停止并且使用纸笔记本电脑图的一般情况下击倒了一个基类描述共用的上下文。你"重构"前两类的后裔,这给你一个现实和相当多的更改你的基类。然后下一个第三十一在公园里散步。

这只是第二天,在小组会议,你拯救每一个人的第三十分钟的无聊说:"我使用的战略模式。他们的所有工作相同的,所以只有一个测试程序,它需要参数,以改变测试的情况。"

亲密熟悉的图案让你用他们的条件反射,每当情况需要它。当人对待的使用模式作为一个目标中自己的权利,您得到做作的,丑陋的代码使用的语言的机构,而不是目的;如何,而不是为什么。


大多数模式地址的经常性基本问题,如减缓和复杂性需要提供扩展分。提供扩展的观点,当其明确表示,他们不需要毫无意义的复杂的代码和创造更多的失败点和测试的情况。除非你建立一个框架,用于释放到野外,只能解决的问题实际上,你的脸。

模式是唯一的工具和词汇。你写的代码可以为简单、易懂并易于维护因为你知道如何。知道图案你有更多的allternatives在您的处置,并且你有一种语言讨论的优点和缺点的办法之前执行。

在这两种情况下,你不只是"开关"来"使用模式"。你只要继续做什么你总是这样做,编写代码的最好方法你知道如何。

这是类似的任何其他设计的决定。最终,它依赖。你应该了解这些模式是有益的在你的语言(多GoF模式不需要在口齿不清的或一般的,例如),学习他们的优点和缺点,理解限制的系统,并使选择最适合你的需要。

最好的建议,我可以给的是学习,学习,学习。

交换从一个简单的方法以一个正式的设计图案是通常发生的事情相当自然地对我来说,作为一个问题增加的复杂性。关键是要足够的熟悉的模式就可以认识到引爆点,并交换从简单的方法来设计图案的时候它会带来最大益处于当前和未来的发展。

对于一个更大、更复杂的项目,引爆点应该是相当早期的;在许多情况下,之前你甚至开始编码。对于较小的项目,你能负担得起之前要等待决定实施一种模式。

一个最好的事情可以做,以增加能力,认识到当一个模式应该使用是需要一些时间后完成一个项目,以审查如何复杂的"简单"的做法已成为。如果它已经采取了你不少时间和精力来实现一种模式,或者如果该模式将澄清什么你们试图要做的,你可以的文件的知识,为在下一次你遇到一个类似的问题。

当你有一个问题,其中一种模式解决。GoF本书有一个部分中的每个章节,说明哪些类型的方案的每一个图案是适当的。你应该 分析每一个问题,你们,然后去看看是什么图案来使用。你应该熟悉的图案让你学会认识到什么情况下,呼吁他们。

一个不错的事情有关原GoF书是有讨论的情况下,该模式将最好的解决问题。审查这些讨论可以帮助确定如果"它的时间"。

另一个良好的开端是头先设计的模式。演习,说明使用不同的设计图案拟订足以提供一个良好的学习经验。此外演习的也根植于现实世界方案,因此它永远不会一个延伸到看见在适当的时候应用的设计图案。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top