方法与设计

来源:互联网 发布:索尼网络电视机 编辑:程序博客网 时间:2024/06/02 05:00

本文主要是从《Java编程思想》上面总结出来的。

方法论

在你经历整个开发过程时,最重要的一点是:不要迷失。这很容易做到。大多数分析与设计方法论都试图去解决最大型的问题。但是请记住,多数工程并不属于这一范畴,我们通常只需要采取某种方法论所推荐的一个相对较小的子集就可以得到成功的分析与设计。但是某些类型的处理过程,无论它们怎样小或者怎样受限制,通常也都应该采用某种比直接开始编码要好得多的方式。

这很容易使人迷失,从而陷入"分析瘫痪",使你感觉无法取得进展,因为你无法确定当前阶段的每一个细节。记住,无论你做了多少分析,总有些问题不到设计阶段是无法发现的,而更多的问题直到编码阶段,或者程序运行时才会暴露出来。因此,快速完成分析与设计阶段,并且对开发的系统进行测试才是至关重要的。

阶段0:制定计划

如果在开发过程中划分一些里程碑,将有助于集中精力,并且每达到一个里程碑,都是对你所获得的一点成就的激励,使你不至于被"完成整个项目"这样一个单一的目标给弄得晕头转向。此外,将项目划分为许多可以一口吃掉的小块,也可以使得项目不那么吓人。

任务描述

开发任务系统,无论多复杂,都有一个基本目的:它所处的行业、它所需要满足的基本需求。只有抛开用户界面、与硬件相关或系统相关的细节、算法,效率等问题,你才能找出简单而直接的系统核心。就像电影中的"中心思想",只用一两句话来描述。这种纯粹的描述就是项目的起点。

阶段1:做什么?

此阶段我们要完成什么任务呢?注意力必须集中于问题的核心:确定系统要做什么。对此,最有用的工具就是一组"用例",也就是极限编程中的"用户故事"。用例能够找出系统的关键特征,揭示出一些将要用到的基本的类。这需要对如下问题,做出本质性的描述式解答:

  • 谁将使用该系统?
  • 系统参与者能使用该系统做什么?
  • 参与者如何使用该系统?
  • 如果别的人正在做这件事,或者同一个参与者有不同的目的,那么它会以什么方式动作?
  • 使用该系统做某件事时,可能会发生什么问题?(用以揭示异常)

用例图应该尽量简单,以免你过早陷入系统实现的细节

阶段2:如何构建?

CRC卡(类---职责-----协作对象)是一个非常管用的工具。做一些3*5的卡片,然后在上面填写。每张卡片表示一个单独的类,卡片上应该记录:

  • 类的名字。这很重要,应该做到让人望文生义,一眼就能猜到类的功能。
  • 类的职责:它应该做的事情。通常可以从类的方法名中总结获得(因为在好的设计中,那么方法的名字应该是描述性的),但也不排除还有别人成分。如果你还想有所收获,从一个懒惰的程序员的观点来看,这个问题就是:你期待什么样的对象神奇般地出现以帮你解决问题?
  • 类的"协作者":它与哪些类交互?"交互"是很宽泛的词,可以表示聚合,或者只是存在某些对象,提供服务给此类的对象。协作关系还应该考虑这个类的听众。也就是说用在什么场合,不同的场合,可能有不同的侧重点为。

CRC卡最大的优点之一就是"交流"。尤其是在团队中不用电脑进行实时交流的时候。

对象设计的五个阶段:

  • 发现对象
  • 对象的组合
  • 系统的构建
  • 系统扩展
  • 对象重用

无论如何,别指望系统中的多数对象都被设计为可重用的,因为完全可以接受大多数的对象是系统相关的。可重用的类型不是很常见,而且为了可重用,它们必须解决更通用的问题。

对象开发指南


在思考如何开发类的时候,下列步骤是一些具体的指导:

  • 为一个特定问题生成一个类,然后在解决其他问题的过程中,让这个类成长并且成熟。
  • 记住,发现你所需要的类(接口)是系统设计的主要工作。如果这些类已经有了,那么这将是个简单的项目。
  • 不要强迫自己在开始阶段就明白所有事件。在学习的过程中,随时可能了解某些事情。
  • 开始编程。做出可以运行的某些东西,才可以证明或者反驳你的设计。不要担心你的代码会变成意大利面条似的过程型代码。类可以解决问题分解,并有助于对无序和混乱的状态进行控制。不好的类并不会破坏好的类。
  • 保持简单。功能明确、短小而清楚的对象,好过庞大而复杂的接口。需要做决定的时候,考虑最简单的选择,因为简单的类总是最好的。由短小而简单的开始,在更好的理解问题之后,可以扩展类或者接口。向类中添加方法总是容易的,但随着时间推移,从类中删除方法可就困难了。 
      

阶段3:构建系统核心

这是从原始设计到可测试的代码的最初的转换,编译并执行此代码,可以证明你的系统架构是否正常。这不是一次就能通过的过程,到第四阶段你就会明白,这只是迭代构建系统的一系列步骤的开始。

阶段4:迭代用例

许多原因使得迭代式的开发过程具有非凡的价值。你可以尽早发现并解除风险,用户有充足的机会改变主意,程序员可以获得更高的成就感,能够更准确地掌握项目。

阶段5:演化

这一阶段,传统观念上称为"维护"阶段。

"演化"是让你的程序从"好"到达"非常好",也是将开始并不了解的问题,变得清楚的过程,同时也是将你的类,从仅适合单个项目使用,"演化"到成为能够复用资源的过程。

成功的计划

你应该遵循计划------最好是简单而短小的计划,在编码之前好好设计结构。你会发现。比你直接朝着硬干,这样做使得将事物组合起来变得容易多了,你也能得到更多的满足感。

极限编程



优先编写测试


原创粉丝点击